############################################################## # Structure # # Situations are short or long running objects that are bound to a region, which go through phases. # Characters can be a participant in the situation, and then will belong to one participant group. ############################################################## situation_type = { ### Brief: window ( enum ) # What code functions will be available for the gui window. # Default is 'situation'. # # Enums: # situation # the_great_steppe # silk_road # dynastic_cycle # window = situation ### Brief: gui_window_name ( string ) # Which gui window to use for this situation. Notice you can mix and match code 'window' with any gui window. # Expects a file to be located under "gui/" and will automatically apply the ".gui" file ending, containing a widget # with the specified name. # Default is "window_situation" # gui_window_name = window_situation ### Brief: gui_participation_window_name ( string ) # Which gui window to use for the situation participation sub-window. # Expects a file to be located under "gui/" and will automatically apply the ".gui" file ending, containing a widget # with the specified name. # Default is "window_situation_participation" # gui_participation_window_name = window_situation_participation ### Brief: gui_tooltip_group_focused (bool ) # If phase effect tooltips display effects by Participant Group, instead of by Named Modifier Set (modifier_named_sets) # gui_tooltip_group_focused = no # Path to illustration shown in the situation list window illustration = "path/to/image.dds" # Triggered icon for the situation, accessible via [Situation.GetIcon]. # Write one entry per icon. The trigger is based on a Situation scope. # If no empty triggered asset is defined, the default will be the situation_type icon. icon = { trigger = { ... } reference = "icon_path.dds" } # Foldable situation group type where to put this situation in the gui. # Defaults to the 'minor' group. situation_group_type = # The order that the situation should show up within its situation group in the gui. # Higher number is sorted first, tie breaking is on definition order if same sort order. # Defaults to 0. sort_order = integer ### Brief: map_mode ( enum ) # Which map mode to use for this situation type # Default is participant_groups # # Enums: # participant_groups # sub_regions # map_mode = participant_groups ### What geographical sub-regions this Situation has # - Each sub-region has their own list of characters for each participant group (see below) # - Each sub-region will also have their own current active phase (same phases and flow for all sub-regions, as defined in 'phases' below # - You are required to have at least 1 sub-region (otherwise the situation doesn't affect anything) # - You are restricted to max 255 sub-regions. This is needed to properly identify participant groups within the region (see below) # - Subregions cannot overlap sub_regions = { # Note: Every region type added below is counted as part of this sub-region 's area my_sub_region_key = { # (optional) Path to illustration shown in the situation windows, texture can be accessed in GUI: "[SituationSubRegion.GetIllustration]" illustration = "path/to/image.dds" # (optional) Path to icon shown in the situation windows, texture can be accessed in GUI: "[SituationSubRegion.GetIcon]" icon = "path/to/image.dds" # (optional) The color of the sub-region, used for some map modes map_color = { 1 0.5 0.2 } # (optional) Add array of pre-defined geographical regions geographical_regions = { world_mesopotamia special_mongol_empire_start_region } } my_other_region_key = { ... } } ### Define one or more participant groups. # Participating characters can only belong to one participant group at a time, for each sub-region. # Characters being considered for participation will be placed in the *first* group they are valid for. # You are restricted to max 255 participant groups. This is needed to properly identify participant groups within a specific region. # There is a set of groups for each sub-region. participant_groups = { # One group with characters my_group_key = { # (optional) Path to icon for group icon = "path/to/image.dds" ### Should this group automatically consider all landed rulers in a sub-region as potential participants # Rulers still need to satisfy the other conditions of this group to be automatically added to it. # If this is 'no', then you will need to manually add/remove landed rulers to the Situation instead # (default: yes) auto_add_rulers = yes ### Should this group automatically consider all rulers with their domicile in a sub-region as potential participants # Landless rulers still need to satisfy the other conditions of this group to be automatically added to it. # If this is 'no', then you will need to manually add/remove landless characters to the Situation instead # (default: yes) auto_add_landless_rulers = yes # (optional) The color of the participant group, used for some map modes map_color = { 1 0.5 0.2 } # Is it required that the capital of participants is in the region? # (default: no) require_capital_in_sub_region = no # Is it required that some part of the domain of participants is in the region? # (default: no) require_domain_in_sub_region = no # Is it required that some part of the realm of participants is in the region? # (default: yes) require_realm_in_sub_region = yes # Is it required that the character's domicile, if any, is in the region? # Character without domicile will still satisfy this requirement. # (default: no) require_domicile_in_sub_region = no ### Trigger determining if a character is valid to be added / can stay in this group (optional) # root = character # scope:situation = situation # scope:situation_sub_region = situation sub region is_character_valid = {} ### Effect run when character joins # root = character # scope:situation = situation # scope:situation_participant_group = situation participant group # scope:situation_sub_region = situation sub region on_join = {} ### Effect run when character leaves the participant group (note: not fired when the situation ends) # root = character # scope:situation = situation # scope:situation_participant_group = situation participant group # scope:situation_sub_region = situation sub region on_leave = {} } } ### Effect run when Situation starts (and initial setup has been completed) # Root = situation on_start = {} ### Effect run when Situation ends # Root = situation on_end = {} ### Effect run every month # Root = situation on_monthly = {} ### Effect run every year # Root = situation on_yearly = {} ### Effect run on Character as they join the situation # Root = character on_join = {} ### Effect run on Character as they leave the situation (note: not fired when the situation ends) # Root = character on_leave = {} ### If this situation type can only exist once in the world # (this allows access via scope `situation:`) # Default: no is_unique = no # Enables full catalyst history for the situation if set to yes. # The catalyst history can become very big, only use this flag if needed. keep_full_history = no ### If rulers involved in this situation should migrate in search for better fetrility # Migration AI is a complex part of AI logic, so it needs to be explicitly enabled here # Rules that are involved insituation and who use county fertility will migrate # Default: no migration = no # Which phase should this situation start in (if none if given on situation creation) start_phase = my_phase_key # Are the situation phase icons flat or not? Mismatch here gives weird appearance in tooltips. # Default: yes use_situation_phase_flat_icons = yes # Which phases can this Situation Type be in? (at least one needs to exist) phases = { # Definition of one phase my_phase_key = { ### Brief: parameters ( parameter list ) # Arbitrary parameters related to the phase type # Can be checked in gui by: SituationPhaseType.HasParameter('string') # Note: Requires loc format "situation_parameter_" to show up in tooltips # # Differenting from the parameters in modifier_named_sets in that these # are always the same on the phase type regardless of involved characters # parameters = { some_parameter = yes } # Effect run when phase is started in a specific sub region # Root = situation # scope:situation = situation # scope:situation_sub_region = situation sub region this phase belongs to on_start = { } # Effect run when phase in a specific sub region is being ended (and next phase has been determined) # Root = situation # scope:situation = situation # scope:situation_sub_region = situation sub region this phase belongs to on_end = { } # (optional) Path to illustration shown in the situation windows # Texture can be accessed in GUI: "[SituationPhaseType.GetIllustration]" or "[SituationSubRegion.GetCurrentPhase.GetType.GetIllustration]" illustration = "path/to/image.dds" # (optional) Path to icon for group icon = "path/to/image.dds" # (optional) Map province effect applied to all provinces of the sub-region if this phase is active map_province_effect = map_province_effect_key # (optional) Map province effect intensity (range 0.0-1.0, default 1.0) map_province_effect_intensity = 1.0 # (optional) Maximum duration (days) this phase will run. # `max_duration_next_phase` will determine which phase will be next, if max_duration is met # [Scripted Duration] # root - situation # scope:situation_sub_region = situation sub region this phase belongs to max_duration = { days = 1234 } # How a next phase is selected, if this phase ends by running out of duration (without a phase taking it over before that). # # Possible values: # (default) highest_points - whichever of the 'future_phases' has accumulated the most 'points' # weighted_random_points - randomly picks one of the 'future_phases', weighted by their current 'points' # random_non_takeover - randomly picks one of the 'future_phases' with equal weight, only picking from phases that have `takeover_type = none` # weighted_non_takover - picks one of the 'future_phases' with highest 'weight' value max_duration_next_phase = weighted_random_points # Which phases could this phase transition into? future_phases = { # 'phase_key' of possible future phase my_future_phase_key = { ### (optional) If this phase can take over a currently active phase, and how. # # Possible values: # none - (default) It cannot take over an active phase # points - when the phase accumulates enough catalyst points, specified by `takeover_points` # duration - when the current active phase has been active for a specific duration, specified by `takeover_duration` takeover_type = duration ### (optional) Scripted value determining when this phase takes over an active phase in catalyst points # Cannot be used together with `takeover_duration` takeover_points = 1234 ### (optional) Scripted value determining when this phase takes over for the next phase weight = 10 ### Scripted value determining when this phase takes over an active phase, if that phase has been active for a duration. (scripted duration) # Cannot be used together with `takeover_points` # Root = situation # scope:situation_sub_region = situation sub region this phase belongs to takeover_duration = { days = 1234 } ### (optional) Which catalysts contribute to this phase taking over? Value is "number of points" added to future phase total. # If 'takeover_type = points', this can trigger an automatic take-over of the current phase by this future phase. # (possible catalysts are defined in common/situation/catalyst) catalysts = { catalyst_betrayed_alliance = 25 catalyst_something_something = 30 } } # Another possible future phase other_future_phase_key = { # More catalysts here } } # Which modifiers and other effects are active while this phase is active modifier_named_sets = { ### Named "set of modifiers" # Apply modifiers / parameters to current situation phase & participants # Examples: "War Effects", "Diplomacy Effects" # Note: The arbitrary name you set will be used as it's localization key # war_effects_and_stuff_set = { ### Brief: icon ( string ) # Path to icon texture displayed in situation windows icon = "path/to/image.dds" ### Applied to all participant groups in the situation # (see `my_participant_group_type_key` below for examples) all = { county_modifier = {} character_modifier = {} parameters = {} doctrine_character_modifier = {} } # Only for one specific participant group my_participant_group_type_key = { # (optional) Modifier applied to the character participant character_modifier = {} # (optional) Modifier applied to all domain counties of a ruler participant county_modifier = {} # (optional) One or more situation parameters that are active while this phase is active parameters = { cheaper_to_convert_to_struggle_faith = yes county_faith_conversion_in_region_proceeds_faster = yes } # Applied to involved characters if they have the given doctrine (can define multiple 'doctrine_character_modifier') doctrine_character_modifier = { name = name_of_doctrine_localization_key doctrine = doctrine_theocracy_lay_clergy same_faith_opinion = 3 } doctrine_character_modifier = { name = name_of_other_doctrine_localization_key doctrine = doctrine_theocracy_temporal same_faith_opinion = -3 } } } another_named_set = { ... } } } } }