# 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 Archipelago options are valid at this site:
#        https://archipelago.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 YAYARG Template

game: YAYARG
requires:
  version: 0.6.7 # Version of Archipelago required for this yaml to work as expected.
  game:
    YAYARG: 2.5.0 # Version of the world required for this yaml to work as expected.

YAYARG:
  ################
  # 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 value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-99: 0 # random value between 0 and 99
    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

  songList:
    # Accepts either:
    # 1. The filename of your song list json file (generated by the YAML Creation tool) that must be placed in the 
    #    'YAYARG Song Data' folder within the Archipelago directory of the person generating the seed
    # 2. A song data hash string exported from the YAML Creation tool
    # 
    # WARNING: Hash strings cannot use weighted option syntax. Replace 'null' with the hash string in quotes.
    # Example: song_list: "your_hash_string_here"
    null

  song_pools:
    # Define custom song pools for the randomizer. Each pool specifies which songs are available based on 
    # instrument and difficulty requirements, and how many songs from that pool should be checkable locations.
    # 
    # Each song pool must have a unique name and specify:
    # - instrument: The instrument this pool is for (see supported instruments below)
    # - random_variance: Randomizes the pool size by selecting a value between amount_in_pool − variance and amount_in_pool + variance
    # - amount_in_pool: Number of songs from this pool to include
    # - min_difficulty: Minimum difficulty tier (0 or higher)
    # - max_difficulty: Maximum difficulty tier (0 or higher)
    # - completion_requirements: Settings for what counts as completing a song
    # 
    # **Supported Instruments:**
    # - FiveFretGuitar: Standard 5-button guitar
    # - FiveFretBass: Standard 5-button bass
    # - FourLaneDrums: 4-lane drums (Rock Band style)
    # - ProDrums: Pro drums with cymbals
    # - FiveLaneDrums: 5-lane drums (Guitar Hero style)
    # - Keys: Keyboard/keys
    # - ProKeys: Pro keys with multiple lanes
    # - Vocals: Lead vocals
    # - Harmony: Harmony vocals
    # 
    # **Completion Requirements:**
    # - reward1_req: Score requirement for the standard reward
    #   - Clear: Just complete the song
    #   - OneStar: Achieve 1 star
    #   - TwoStar: Achieve 2 stars
    #   - ThreeStar: Achieve 3 stars
    #   - FourStar: Achieve 4 stars
    #   - FiveStar: Achieve 5 stars
    #   - GoldStar: Achieve gold star rating
    #   - FullCombo: Complete without missing any notes or breaking combo
    # - reward1_diff: The difficulty you must complete the song at for the standard reward
    #   - Easy
    #   - Medium
    #   - Hard
    #   - Expert
    # - reward2_req: Requirement for the extra reward if one exists (same options as reward1_req)
    # - reward2_diff: Difficulty tier for the extra reward if one exists (same options as reward1_diff)
    Guitar:
      amount_in_pool: 40
      completion_requirements:
        reward1_diff: Expert
        reward1_req: Clear
        reward2_diff: Expert
        reward2_req: ThreeStar
      instrument: FiveFretGuitar
      max_difficulty: 5
      max_time: 3600
      min_difficulty: 3
      min_time: 0
      random_variance: 5

  song_exclusion_list:
    # A list of songs that will be completely excluded from your seed.
    # 
    # Songs must be specified by their song hash, which can be obtained
    # from the YAML Generator.
    # 
    # Example::
    #     [song_hash_5, song_hash_6, song_hash_7]
    []

  exclusions_per_pool:
    # A mapping of songs to the specific pools they should be excluded from.
    # 
    # Songs must be specified by their song hash, which can be obtained
    # from the YAML Generator.
    # 
    # Example::
    #     song_hash_3: ['Guitar Pool Name', 'Bass Pool Name']
    #     song_hash_4: ['Drum Pool Name']
    {}

  inclusions_per_pool:
    # A mapping of songs to the pools they are required to appear in.
    # 
    # Each listed song will always appear in at least one of the specified pools.
    # 
    # Songs must be specified by their song hash, which can be obtained
    # from the YAML Generator.
    # 
    # Example::
    #     song_hash_3: ['Guitar Pool Name', 'Bass Pool Name']
    #     song_hash_4: ['Drum Pool Name']
    {}

  goal_pool_plando:
    # Forces the goal song into the given pool
    '': 50

  goal_song_plando:
    # Forces the goal song to be the given song
    # 
    # The song must be entered by the song hash which can be obtained from the YAML Generator
    '': 50

  song_check_extra:
    # Determines what percentage of song locations will award an extra item when completed. This includes starting songs.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    100: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  song_pack_percentage:
    # Controls how many songs are grouped into Song Packs instead of being
    # unlocked individually.
    # 
    # 0%  = All songs unlock individually.
    # >0% = That percentage of songs will be placed into Song Pack items.
    # 
    # Each Song Pack unlocks a number of songs equal to "Song Pack Amount".
    # Songs not selected for Song Packs will appear as individual unlocks.
    #
    # 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 value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  song_pack_size:
    # Determines how many songs are unlocked by each Song Pack item.
    # 
    # This option only has an effect if "Song Pack Percentage" is greater than 0.
    # When Song Packs are enabled, each Song Pack item will unlock this many songs
    # at once instead of unlocking songs individually.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 2
    # Maximum value is 999
    3: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-2-999: 0 # random value between 2 and 999

  extra_song_unlock:
    # Adds duplicate Song Unlock items to the item pool.
    # 
    # This percentage of Song Unlock items — including both individual song
    # unlocks and Song Pack unlocks — will have an additional copy added to
    # the pool.
    # 
    # Extra copies are only added if there is available space remaining in
    # the item pool.
    #
    # 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 value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  instrument_shuffle:
    # You will need to collect an instruments item before you can play songs requiring that instrument.
    # You start with one random instrument unlocked.
    # Requires at least two song pools with different instruments.
    'false': 50
    'true': 0

  reuse_songs:
    # If enabled, the same song can appear once for each instrument.
    # If disabled, each song can only appear once total across all pools.
    'false': 50
    'true': 0

  max_setlist_time:
    # WARNING: This setting is experimental and may produce unstable results,
    # it should never be used in large public seeds. If set too low, 
    # generation may fail or require multiple attempts and manual YAML adjustments.
    # 
    # If the total duration of all selected songs (in seconds) exceeds this value,
    # songs will be removed from the seed until the total duration falls at or
    # below the specified limit.
    # 
    # A value of 0 disables this feature.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 86400
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-86400: 0 # random value between 0 and 86400

  starting_songs:
    # Sets the number of songs you start with in your setlist.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 999
    3: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-999: 0 # random value between 1 and 999

  goal_song_item_needed:
    # Does your goal songs song item need to be found before it can be completed
    'false': 50
    'true': 0

  setlist_needed:
    # What percentage of your total songs should be completed to unlock your goal song.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    80: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  fame_point_needed:
    # What percentage of fame points in the pool should be required to unlock your goal song.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    80: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  fame_point_amount:
    # If goal is set to require fame points, add this many to the pool
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 999
    30: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-999: 0 # random value between 0 and 999

  star_power:
    # Specifies the weight of the Star Power filler item.
    # This item adds 1/4 of a Star Power bar when received.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 999
    5: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-999: 0 # random value between 0 and 999

  swap_song_random:
    # Specifies the weight of the Swap Song (Random) filler item.
    # This item lets you swap one of your songs with a randomly selected new song.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 999
    5: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-999: 0 # random value between 0 and 999

  swap_song_choice:
    # Specifies the weight of the Swap Song (Choice) filler item.
    # This item lets you swap one of your songs with a new one of your choice.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 999
    3: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-999: 0 # random value between 0 and 999

  fail_prevention:
    # Specifies the weight of the Failure Prevention item.
    # These will prevent you from failing a song once per item by granting you 1/4 of a rock meter.
    # It will activate automatically when you would fail a song.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 999
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-999: 0 # random value between 0 and 999

  lower_difficulty:
    # Specifies the weight of the Lower Difficulty filler item.
    # This item lets you Lower the instrument difficulty or score requirement for a song of your choice.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 999
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-999: 0 # random value between 0 and 999

  restart_trap:
    # Specifies the weight of the Restart Trap item.
    # Recieving this item during a song will cause the song to immediately exit to the menu.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 999
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-999: 0 # random value between 0 and 999

  rock_meter_trap:
    # Specifies the weight of the Rock Meter Trap item.
    # Recieving this item during a song will drain your rock meter by 1/4th.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 999
    1: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-999: 0 # random value between 0 and 999

  nothing_item:
    # Specifies the weight of the Nothing filler item.
    # It does nothing.
    # 
    # If all filler/trap items are set to a weight of zero, this value will be forced to 1
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 999
    1: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-999: 0 # random value between 0 and 999

  death_link:
    # Failing a song will send a DeathLink to others. 
    # If you receive a DeathLink, you will instantly fail your current song. 
    # 
    # Death link will trigger if you fail a song or if you fail to meet the requirements for the song location check after completing it.
    # 
    # Modes:
    # Instant Fail: Recieving a DeathLink will cause you to instantly fail the song you are currently playing.
    # Rock Meter: Recieving a DeathLink will cause the Rock Meter to decrease low enough that missing a single note will cause you to fail.
    #     -Rock Meter is not supported in Yarg Stable. If selected when using that version, Instant Fail will be used instead.
    # 
    # This setting can be modfied mid-game at any time in the client.
    disabled: 50
    rock_meter: 0
    instant_fail: 0

  energy_link:
    # Completing songs adds energy to the Energy Link pool based on your total score.
    # The conversion rate scales from 1:20,000 (0% complete) to 1:1,000,000 (100% complete).
    # 
    # Modes:
    # - Check Song: Only songs that send item checks contribute energy and only once when the location is checked.
    # - Other Song: Only songs without item checks contribute energy.
    # - Any Song: All completed songs contribute energy.
    disabled: 50
    check_song: 0
    other_song: 0
    any_song: 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 the specified amount of these items. Example: "Bomb: 1"
    {}

  start_inventory_from_pool:
    # Start with the specified amount of these items and don't place them in the world. Example: "Bomb: 1"
    # 
    # 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.
    []

  plando_items:
    # Generic items plando.
    []
