# Q. What is this file?
# A. This file contains options which allow you to configure your multiworld experience while allowing
#    others to play how they want as well.
#
# Q. How do I use it?
# A. The options in this file are weighted. This means the higher number you assign to a value, the
#    more chances you have for that option to be chosen. For example, an option like this:
#
#    map_shuffle:
#      on: 5
#      off: 15
#
#    Means you have 5 chances for map shuffle to occur, and 15 chances for map shuffle to be turned
#    off.
#
# Q. I've never seen a file like this before. What characters am I allowed to use?
# A. This is a .yaml file. You are allowed to use most characters.
#    To test if your yaml is valid or not, you can use this website:
#        http://www.yamllint.com/
#    You can also verify that your MultiworldGG options are valid at this site:
#        https://multiworld.gg/check

# Your name in-game, limited to 16 characters.
#     {player} will be replaced with the player's slot number.
#     {PLAYER} will be replaced with the player's slot number, if that slot number is greater than 1.
#     {number} will be replaced with the counter value of the name.
#     {NUMBER} will be replaced with the counter value of the name, if the counter value is greater than 1.
name: Player{number}

# Used to describe your yaml. Useful if you have multiple files.
description: Default gzDoom Template

game: gzDoom
requires:
  version: 0.7.127 # Version of MultiworldGG required for this yaml to work as expected.

gzDoom:
  # Game Options
  progression_balancing:
    # A system that can move progression earlier, to try and prevent the player from getting stuck and bored early.
    # 
    # A lower setting means more getting stuck. A higher setting means less getting stuck.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 99
    random: 0
    random-low: 0
    random-high: 0
    disabled: 0 # equivalent to 0
    normal: 50 # equivalent to 50
    extreme: 0 # equivalent to 99

  accessibility:
    # Set rules for reachability of your items/locations.
    # 
    # **Full:** ensure everything can be reached and acquired.
    # 
    # **Minimal:** ensure what is needed to reach your goal can be acquired.
    full: 50
    minimal: 0

  plando_items:
    # Generic items plando.
    []

  selected_wad:
    # Which WAD to generate for.
    # 
    # This list is populated from the logic files built in to the apworld. If you
    # want to generate a game for something else, see the 'new-wads.md' documentation
    # file.
    # 
    # If you select more than one WAD from this list, it will pick one for you at random.
    ['MAYhem 2048', 'The Adventures of Square', 'Scythe 2', '1000 Lines II', 'FreeDoom 2', 'FreeDoom', '1000 Lines', 'Plutonia', 'TNT', 'Demonfear', 'Scythe', 'Doom 2', 'Chex Quest 3', 'Going Down Turbo', 'Doom', 'Heretic']

  spawn_filter:
    # Tell the generator which spawn filter (information about what items and enemies
    # spawn in each map) the game will use.
    # 
    # You need to pick a setting here that matches the difficulty you will be playing
    # on. In stock Doom, ITYTD and HNTR use "easy" spawns, HMP uses "medium", and
    # UV and NM use "hard".
    # 
    # If you are playing with a mod that changes this, make sure that you choose the
    # filter appropriate to the difficulty level you are selecting. Many gameplay mods
    # have custom difficulty settings that are not just simple reskins of the Doom
    # ones.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 3
    random: 0
    random-low: 0
    random-high: 0
    easy: 0 # equivalent to 1
    medium: 50 # equivalent to 2
    hard: 0 # equivalent to 3

  starting_levels:
    # Set of levels to begin with access to. If you select levels that aren't in the
    # WAD you choose (e.g. E1M1 when you're generating for Doom 2) they will be safely
    # ignored. If you don't select any levels in your chosen WAD, it will force you
    # to start with access to the first level.
    # 
    # You will begin with the access code and all keys for these levels in your inventory.
    # 
    # This option supports globbing expressions.
    ['E?M1', 'MAP01']

  included_levels:
    # Set of levels to include in randomization.
    # 
    # It is safe to select levels not in the target WAD; they will be ignored. Selecting
    # no levels is equivalent to selecting all levels.
    # 
    # The default win condition is to complete all levels, so adding more levels will
    # result in a longer game. If you want to play lots of levels but only beat some
    # of them, you should also adjust the `win_conditions` option.
    # 
    # This option supports globbing expressions.
    []

  excluded_levels:
    # Set of levels to exclude from randomization.
    # 
    # This takes precedence over included_levels, if a map appears in both.
    # 
    # This option supports globbing expressions.
    ['TITLEMAP']

  level_order_bias:
    # How closely the randomizer tries to follow the original level order of the
    # WAD. Internally, this is the % of earlier levels you need to be able to beat
    # before it will consider later levels in logic. This is primarily useful for
    # enforcing at least a bit of difficulty progression rather than being dumped
    # straight from MAP01 to MAP30.
    # 
    # The default setting of 25% means it won't require you to go to (e.g.) MAP08
    # until after beating two of the preceding levels.
    # 
    # Starting levels are exempt from this check.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    25: 50
    random: 0
    random-low: 0
    random-high: 0

  local_weapon_bias:
    # How much the randomizer cares about making sure you have access to the
    # weapons in a level before it considers that level to be in logic. Most Doom
    # levels are possible to beat from a pistol start by finding weapons in the
    # level itself, but in the randomizer there is no guarantee the level contains
    # any weapons at all; this setting makes the randomizer ensure that some of
    # the weapons you would normally find in the level are accessible before you
    # enter it.
    # 
    # The setting is a percentage; higher values mean the randomizer will try to
    # make more of the weapons accessible before you need to enter the level. At
    # 100% it will not consider a level to be in logic until all of the weapons
    # normally found in it are accessible to you elsewhere.
    # 
    # Starting levels are exempt from this check.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    0: 50
    random: 0
    random-low: 0
    random-high: 0

  carryover_weapon_bias:
    # How much the randomizer cares about making sure you have access to the weapons
    # you'd start a level with when not pistol-starting (i.e. weapons you'd carry
    # over from earlier levels). This setting is somewhat conservative in that it
    # doesn't take into account death exits.
    # 
    # The setting is a percentage; higher values mean the randomizer will try to
    # make more of the weapons accessible before you need to enter the level. At
    # 100% it will not consider a level to be in logic until all of the weapons
    # normally found before entering it are availalble to you elsewhere.
    # 
    # Starting levels are exempt from this check.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    50: 50
    random: 0
    random-low: 0
    random-high: 0

  win_conditions:
    # Win conditions for the randomized game. If multiple conditions are enabled,
    # the player is required to satisfy all of them!
    # 
    #     nrof-maps: (int, fraction, or "all")
    # Require the player to finish this many levels. If "all", all levels included
    # in randomization must be cleared. If set to an integer >= 1, that many
    # levels must be cleared. If a fraction, that fraction of levels is required,
    # e.g. 0.5 would require you to clear 16 of Doom 2's 32 levels.
    # 
    #     specific-maps: (list of map names)
    # Require the player to finish these specific maps. Globbing expressions are
    # supported, so `maps: ["E1M?" "E?M8"]` would require the player to beat all
    # of episode 1 and all boss maps in Doom 1, for example. Maps listed here that
    # don't exist in the selected WAD are ignored.
    nrof-maps: all
    specific-maps: []

  included_item_categories:
    # Which item categories to include in randomization. This controls both which
    # items are replaced with checks, and what the item pool contains.
    # 
    # Keys and weapons are always included and cannot be controlled with this
    # option. You must enable at least one category here or generation is likely
    # to fail.
    # 
    # For each category, a setting of `1` enables full randomization, and a setting
    # of `0` disables randomization completely. Values in between will randomize the
    # given proportion, e.g. `"powerup": 0.5` will replace half of the powerups in
    # the game with AP checks (and add the original items to the item pool) and
    # leave the rest alone.
    # 
    # See `glossary.md` for a description of the different categories and which
    # items they cover.
    # 
    # Enabling "medium" categories tends to more than double the number of checks.
    # Enabling all categories tends to increase it by about 10x. Make sure you (and
    # your co-op partners) are prepared for a game with thousands or tens of thousands
    # of checks in Doom if you turn these on.
    big-ammo: 1
    big-armor: 1
    big-health: 1
    powerup: 1

  allow_secret_progress:
    # Whether the randomizer will place progression items in locations flagged as
    # secret. If disabled, secrets will still be randomized but only filler items
    # will be placed there.
    # 
    # NOTE: How well this works is extremely wad-dependent. Many wads contain
    # well-hidden items that are not formally marked as secrets and will not be
    # excluded by this setting. Others mark items that are out in the open or even
    # mandatory to collect as secrets, which can excessively restrict item placement.
    # 
    # NOTE: In wads where most of the items in the first level are secret -- including
    # Doom 1 and 2 -- turning this off is likely to cause generation failures unless
    # you also add more starting levels.
    'false': 0
    'true': 50

  start_with_all_maps:
    # Give the player automaps for all levels from the start.
    # Otherwise, they'll be in the pool as useful, but not required, items.
    'false': 50
    'true': 0

  start_with_keys:
    # If enabled, you will start with all the keys for any starting level that has
    # keys.
    # 
    # This is on by default because turning it off will cause generation failures
    # for newly-scanned wads, or wads where the default starting levels have very
    # restrictive item access. For properly tuned wads where at least some checks
    # are known to be reachable without keys, turning this off will allow the
    # randomizer more freedom in item placement.
    'false': 0
    'true': 50

  max_weapon_copies:
    # Applies a hard limit to the number of copies of each weapon in the item pool.
    # 
    # Lower values mean you may have to wait longer before finding a given weapon,
    # but also means more checks will contain health, powerups, etc. rather than
    # duplicates of weapons you already have.
    # 
    # Setting to 0 disables the limit entirely.
    # 
    # How many copies of each weapon end up in the pool is limited by both this and
    # 'Levels per weapon copy'; whichever is lower takes precedence. This is an
    # upper bound: it will not add more weapons than actually exist in the WAD.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 32
    4: 50
    random: 0
    random-low: 0
    random-high: 0

  levels_per_weapon:
    # Applies a scaling limit to the number of copies of each weapon in the item pool
    # based on how many levels are being played.
    # 
    # The default (8) means that a "standard" 32-level megawad will be limited to
    # at most 4 copies of each weapon. Lower values will increase the limit, higher
    # levels will decrease it.
    # 
    # Setting to 0 disables the limit entirely.
    # 
    # How many copies of each weapon end up in the pool is limited by both this and
    # 'Max weapon copies'; whichever is lower takes precedence. This is an
    # upper bound: it will not add more weapons than actually exist in the WAD.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 32
    8: 50
    random: 0
    random-low: 0
    random-high: 0

  allow_respawn:
    # If enabled, the player will respawn at the start of the level on death. If
    # disabled they must restore from an earlier save.
    # 
    # NOTE: restoring from a save will restore the state of the world, but NOT the
    # state of the randomizer -- checks already collected will remain collected and
    # items used from the randomizer inventory will remain used.
    'false': 0
    'true': 50

  full_persistence:
    # If enabled, all levels will be fully persistent, in the same manner as Hexen
    # hubclusters. Levels can be reset from the level select menu, but this is all
    # or nothing: there is no way to reset individual levels.
    # 
    # EXPERIMENTAL FEATURE - HANDLE WITH CARE
    'false': 50
    'true': 0

  pretuning_mode:
    # This setting is for logic developers. If enabled, most other options are
    # overridden; only selected_wad and spawn_filter remain functional. All checks
    # contain their original items (i.e. there is no randomization) and you start
    # with access to all levels, all automaps, and no keys.
    # 
    # The intent of this mode is to let you play through the game, or specific
    # levels, "normally", to generate a tuning file, even in cases where the
    # initial scan is so conservative as to cause generation failures.
    # 
    # If full_persistence is off, pretuning mode also disables automatic MAPINFO
    # generation, so the game will retain its original episode divisions,
    # intermission text, etc.
    'false': 50
    'true': 0

  # Item & Location Options
  local_items:
    # Forces these items to be in their native world.
    []

  non_local_items:
    # Forces these items to be outside their native world.
    []

  start_inventory:
    # Start with these items.
    {}

  start_inventory_from_pool:
    # Start with these items and don't place them in the world.
    # 
    # The game decides what the replacement items will be.
    {}

  start_hints:
    # Start with these item's locations prefilled into the ``!hint`` command.
    []

  start_location_hints:
    # Start with these locations and their item prefilled into the ``!hint`` command.
    []

  exclude_locations:
    # Prevent these locations from having an important item.
    []

  priority_locations:
    # Prevent these locations from having an unimportant item.
    []

  item_links:
    # Share part of your item pool with other players.
    []
