# 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 Hammerwatch Template

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

Hammerwatch:
  ################
  # 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

  ########
  # Goal #
  ########
  goal:
    # Determines the goal of the slot. Some goals are specific to certain campaigns
    # Options starting with "Castle" are played in the Castle Hammerwatch campaign, while "Temple" options are played in the Temple of the Sun Campaign
    # Castle All Bosses: Defeat all the bosses in Castle Hammerwatch. Escaping is NOT required
    # Castle Escape: Find at least 12 Strange Planks, defeat Worldfire, and escape with your life
    # Castle Plank Hunt: Find a certain number of Strange Planks in Castle Hammerwatch
    # Temple All Bosses: Defeat all the bosses in the Temple of the Sun
    # Temple Plank Hunt: Find a certain number of Strange Planks in the Temple of the Sun
    # Temple Pyramid of Fear: Unlock and complete the Pyramid of Fear
    castle_all_bosses: 0
    castle_escape: 50
    castle_plank_hunt: 0
    temple_all_bosses: 0
    temple_plank_hunt: 0
    temple_pyramid_of_fear: 0

  planks_required_count:
    # Determines the amount of Strange Planks required to win the game for the Plank Hunt goals
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 25
    12: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-25: 0 # random value between 1 and 25

  extra_plank_percent:
    # Determines the percentage of extra Strange Planks in the item pool
    # For the Castle Escape goal, the required planks count is 12
    # For the Plank Hunt goals, the required planks count is determined by the Plank Hunt Requirement setting
    #
    # 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

  ##############
  # Generation #
  ##############
  bonus_behavior:
    # Determines how bonus chest locations in bonus levels are handled
    # None: Don't include any bonus chest items/locations
    # Necessary: Include bonus level locations for any extra items in the pool
    # All: Include all bonus chest items/locations. Extra items will replace filler items as normal
    none: 0
    necessary: 50
    all: 0

  randomize_bonus_keys:
    # Whether bonus keys are shuffled into the pool
    'false': 50
    'true': 0

  randomize_recovery_items:
    # Whether recovery items (such as apples and mana crystals) are shuffled into the pool
    'false': 50
    'true': 0

  randomize_secrets:
    # (TotS only) Whether items from random secrets (small rooms with cracked walls in the cave levels) are shuffled into the item pool
    'false': 50
    'true': 0

  randomize_puzzles:
    # Whether items from peg puzzles are shuffled into the item pool
    'false': 50
    'true': 0

  randomize_enemy_loot:
    # Whether items dropped by minibosses and towers are shuffled into the item pool
    # On: major enemy loot locations will exist using the vanilla loot drop chances
    # All: forces all major enemy loot locations to exist and have items
    'off': 50
    'on': 0
    all: 0

  buttonsanity:
    # Whether the effects of buttons and switches are shuffled into the item pool
    # Normal: button/switch effects are turned into locations, so completing a button sequence or puzzle is one location
    # Insanity: all buttons/switches will be locations, regardless if the button would do anything by itself or not
    'off': 50
    normal: 0
    insanity: 0

  shopsanity_p1:
    # Adds shop upgrades of this player's class to the item pool and enables items to appear in their shop
    # All members of the same class will receive their upgrades together and will have the same items in their shops
    # WARNING: there is normally not enough gold to purchase all upgrades.
    # It is strongly recommended to reduce the costs of shop items so you will not have to grind excessively for gold!
    # WARNING #2: there is no extra logic for shop upgrades!
    # This means you could get into a situation where you are required to play much of your game with no upgrades.
    # Consider making shop upgrades local if you're playing in a larger multiworld
    'off': 50
    paladin: 0
    wizard: 0
    ranger: 0
    warlock: 0
    thief: 0
    priest: 0
    sorcerer: 0
    random_class: 0

  shopsanity_p2:
    # Adds shop upgrades of this player's class to the item pool and enables items to appear in their shop
    # All members of the same class will receive their upgrades together and will have the same items in their shops
    # WARNING: see the warnings in the Shopsanity Player 1 Class option!
    'off': 50
    paladin: 0
    wizard: 0
    ranger: 0
    warlock: 0
    thief: 0
    priest: 0
    sorcerer: 0
    random_class: 0

  shopsanity_p3:
    # Adds shop upgrades of this player's class to the item pool and enables items to appear in their shop
    # All members of the same class will receive their upgrades together and will have the same items in their shops
    # WARNING: see the warnings in the Shopsanity Player 1 Class option!
    'off': 50
    paladin: 0
    wizard: 0
    ranger: 0
    warlock: 0
    thief: 0
    priest: 0
    sorcerer: 0
    random_class: 0

  shopsanity_p4:
    # Adds shop upgrades of this player's class to the item pool and enables items to appear in their shop
    # All members of the same class will receive their upgrades together and will have the same items in their shops
    # WARNING: see the warnings in the Shopsanity Player 1 Class option!
    'off': 50
    paladin: 0
    wizard: 0
    ranger: 0
    warlock: 0
    thief: 0
    priest: 0
    sorcerer: 0
    random_class: 0

  remove_lives:
    # Removes extra lives (Ankhs) from the item pool and replaces them with filler.
    # Recommended to have enabled when playing with the infinite_lives or no_extra_lives modifiers
    'false': 50
    'true': 0

  key_mode:
    # Changes the behavior of how keys interact with gates
    # Generic: keys can be used anywhere on their respective gates (WARNING: can cause generation failures!)
    # Act Specific: (castle only) replaces keys with versions that can only be used in a specific act
    # Floor Master: consolidates keys on a floor into a single item that unlocks all gates of that type on an entire floor
    generic: 0
    act_specific: 50
    floor_master: 0

  big_bronze_key_percent:
    # (Castle only) What percentage of bronze keys get converted into big bronze keys, which act as 3 bronze keys each
    #
    # 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

  extra_keys_percent:
    # Determines the percentage of extra silver and gold keys (and mirrors in the TotS campaign) that are added to the item pool
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 50
    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-50: 0 # random value between 0 and 50

  pan_fragments:
    # (TotS only) If greater than 1 separates the pan into multiple fragments
    # All fragments must be collected in order to purchase from the consumables merchant
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 5
    1: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-5: 0 # random value between 1 and 5

  lever_fragments:
    # (TotS only) Determines if/how the pumps lever is split into multiple items
    # If 0 or 'per_level' the pumps lever will be split into 3 items that only lower the water on a specific cave level
    # If greater than 1 separates the pumps lever into multiple fragments
    # All fragments must be collected in order to turn on all the pumps
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 5
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-5: 0 # random value between 0 and 5
    per_level: 0 # equivalent to 0
    no_split: 50 # equivalent to 1

  pickaxe_fragments:
    # (TotS only) If greater than 1 separates the pickaxe into multiple fragments
    # All fragments must be collected in order for the rocks outside the temple to be broken
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 5
    1: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-5: 0 # random value between 1 and 5

  hammer_fragments:
    # If not 0 makes fragile walls unbreakable without receiving a custom hammer item
    # If greater than 1 separates the hammer into multiple fragments
    # All fragments must be collected in order to break down fragile walls
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 5
    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-5: 0 # random value between 0 and 5

  trap_item_percent:
    # What percentage of filler items are replaced with traps
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    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-100: 0 # random value between 0 and 100

  trap_item_weights:
    # The relative weights of trap items in the item pool
    Banner Trap: 100
    Bomb Trap: 100
    Chaser Trap: 100
    Confuse Trap: 100
    Disarm Trap: 100
    Fire Trap: 100
    Frost Trap: 100
    Hey! Trap: 100
    Mana Drain Trap: 100
    Poison Trap: 100
    Stun Trap: 100

  ##########
  # Layout #
  ##########
  open_castle_portals:
    # (Castle only) Starts the game with the specified number of portals open in the hub
    # This starts with the prison portal and goes up to the chambers portal
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 4
    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-4: 0 # random value between 0 and 4

  shortcut_teleporter:
    # (Castle only) Enables the use of the shortcut portal at the beginning of the game. This allows early access
    # to Prison Floor 3 before the bronze gate, preventing a potential early BK
    # A return portal will also be placed so that the first two floors can be fully completed
    'false': 50
    'true': 0

  exit_randomization:
    # Randomizes where level exits/portals lead. Use the /t command in-game to return to the start if you get stuck!
    # No Boss Exits: exits to boss levels will not be shuffled
    # All: all exits including bosses will be shuffled
    # WARNING: This option has a moderate chance of causing generation to fail, use at your own risk!
    'off': 50
    no_boss_exits: 0
    all: 0

  er_act_range:
    # Determines the maximum number of acts away levels will try to be connected to each other in exit randomization
    # For example with an act range of 1 Prison exits will mostly only connect to other Prison exits or Armory exits
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 3
    1: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-3: 0 # random value between 1 and 3

  er_seed:
    # Determines the seed for generating the exit randomization layout. If "random" the seed will be random
    random: 50

  random_start_exit:
    # If Exit Randomization is on, you will start the game at a random exit determined by the Start Location Act option
    # Use the /t command in game to return if you get stuck!
    'false': 50
    'true': 0

  random_start_exit_act:
    # Determines the act in which you start if Randomize Start Location is on
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 4
    1: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-4: 0 # random value between 1 and 4

  gate_shuffle:
    # Shuffles whether gates are bronze, silver, or gold
    'false': 50
    'true': 0

  shop_shuffle:
    # Shuffles the shops around so that they may be different from their normal locations
    'false': 50
    'true': 0

  enemy_shuffle_mode:
    # Shuffles the locations of enemies, spawners, mini-bosses, and towers in each level
    # Individual: enemies will be shuffled individually regardless of type, keeping the same ratios as vanilla
    # Type: converts all enemies of a single type into another. For example all tier 1 bats can become tier 1 beetles
    # Chaos: enemies will be shuffled individually regardless of type or ratio
    'off': 50
    individual: 0
    type: 0
    chaos: 0

  enemy_shuffle_act_range:
    # How many acts away enemies can be shuffled to
    # When set to 0 only enemies in the same act will be shuffled
    # When set to 3 enemies can be shuffled to any act
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 3
    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-3: 0 # random value between 0 and 3

  enemy_shuffle_keep_tier:
    # If Enemy Shuffle is on, only shuffles enemies of the same tier amongst each other
    'false': 0
    'true': 50

  treasure_shuffle:
    # Shuffles the locations of minor treasure such as coins, crates, pots, and vegetation
    'false': 50
    'true': 0

  ###############
  # Game Tweaks #
  ###############
  difficulty:
    # What difficulty the game will be played on
    easier: 0
    medium: 50
    hard: 0

  starting_life_count:
    # How many extra lives each player will start the game with
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 99
    2: 50
    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

  portal_accessibility:
    # (TotS only) Ensures rune keys will be placed locally on the floor they would normally appear so that hub portals
    # are more easily accessible
    'false': 0
    'true': 50

  no_sunbeam_damage:
    # (TotS only) Disables sunbeam damage, removing much of the long and awkward backtracking inside the temple
    'false': 0
    'true': 50

  shop_upgrade_category_shuffle:
    # Shuffles the shop upgrades between different categories of shops
    # Group: upgrades sharing the same base name (Damage 1, 2, 3, etc.) are shuffled together in the same category
    # All: upgrades are shuffled amongst all categories, regardless of prerequisites
    'off': 50
    group: 0
    all: 0

  shop_cost_min:
    # The lowest percent each shop upgrade cost can be multiplied by
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 500
    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-500: 0 # random value between 0 and 500

  shop_cost_max:
    # The highest percent each shop upgrade cost can be multiplied by
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 500
    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-500: 0 # random value between 0 and 500

  shopsanity_trap_obfuscation:
    # Cause the names and descriptions of trap items in shops to mimic another item in the world of the receiving player
    # On: trap names/descriptions will mimic another item
    # Imperfect: trap names/descriptions will mimic another item, but with subtle changes in letters/punctuation
    # L33T: 7r4p n4m35/d35cr1p710n5 w1ll b3 1n 4ll l3375p34k
    # OwO: twap names/descwiptions wiww be in aww owo
    # All Mystery: instead hides ALL item names/descriptions, so none of the items will be known!
    'off': 50
    'on': 0
    imperfect: 0
    l337: 0
    owo: 0
    all_mystery: 0

  shopsanity_balance_costs:
    # Reduces the costs of items in shops based on their classifications
    # If the item is not progression it will cost 50% as much, and filler items will cost 10% as much
    'false': 0
    'true': 50

  shopsanity_assist:
    # Various methods to make base shop upgrades more accessible
    # Duplicate Base Upgrades: add an extra copy of each base upgrade to the item pool
    # Swap Base Upgrades: swap base upgrades with the earliest version of its sub upgrade so you should find base upgrades first
    # only considers Hammerwatch locations
    # Swap Base Upgrades Experimental: like Swap Base Upgrades, but will swap with locations in ANY game. This may cause issues with other apworlds!
    none: 0
    duplicate_base_upgrades: 0
    swap_base_upgrades: 50
    swap_base_upgrades_experimental: 0

  game_modifiers:
    # Enforces game modifiers to be set either true or false
    # Valid modifiers are: no_extra_lives, 1_hp, shared_hp_pool, no_hp_pickups, no_mana_regen, reverse_hp_regen,
    # infinite_lives, hp_regen, double_damage, double_lives, and 5x_mana_regen
    infinite_lives: true

  death_link:
    # When anybody dies, everyone dies. This also applies to all multiplayer players within a single game
    # This can be changed later in game in the Archipelago options menu
    '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 the specified amount of these items. Example: "Bomb: 1"
    {}

  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.
    []
