855 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			855 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from dataclasses import dataclass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from Options import (
							 | 
						||
| 
								 | 
							
								    Choice,
							 | 
						||
| 
								 | 
							
								    DeathLink,
							 | 
						||
| 
								 | 
							
								    DefaultOnToggle,
							 | 
						||
| 
								 | 
							
								    OptionGroup,
							 | 
						||
| 
								 | 
							
								    OptionSet,
							 | 
						||
| 
								 | 
							
								    PerGameCommonOptions,
							 | 
						||
| 
								 | 
							
								    Range,
							 | 
						||
| 
								 | 
							
								    StartInventoryPool,
							 | 
						||
| 
								 | 
							
								    Toggle,
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from .Locations import DUNGEON_NAMES
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Dungeons(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether dungeon locations are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Dungeons"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TingleChests(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Tingle Chests are hidden in dungeons and must be bombed to make them appear. (2 in DRC, 1 each in FW, TotG, ET, and
							 | 
						||
| 
								 | 
							
								    WT). This controls whether they are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Tingle Chests"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class DungeonSecrets(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    DRC, FW, TotG, ET, and WT each contain 2-3 secret items (11 in total). This controls whether these are randomized.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    The items are relatively well-hidden (they aren't in chests), so don't select this option unless you're prepared to
							 | 
						||
| 
								 | 
							
								    search each dungeon high and low!
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Dungeon Secrets"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class PuzzleSecretCaves(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether the rewards from puzzle-focused secret caves are randomized locations.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Puzzle Secret Caves"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class CombatSecretCaves(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether the rewards from combat-focused secret caves (besides Savage Labyrinth) are randomized
							 | 
						||
| 
								 | 
							
								    locations.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Combat Secret Caves"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SavageLabyrinth(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether the two locations in Savage Labyrinth are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Savage Labyrinth"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class GreatFairies(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether the items given by Great Fairies are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Great Fairies"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ShortSidequests(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether sidequests that can be completed quickly are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Short Sidequests"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class LongSidequests(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether long sidequests (e.g., Lenzo's assistant, withered trees, goron trading) are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Long Sidequests"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SpoilsTrading(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether the items you get by trading in spoils to NPCs are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Spoils Trading"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Minigames(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether most minigames are randomized (auctions, mail sorting, barrel shooting, bird-man contest).
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Minigames"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Battlesquid(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether the Windfall battleship minigame is randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Battlesquid Minigame"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class FreeGifts(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether gifts freely given by NPCs are randomized (Tott, Salvage Corp, imprisoned Tingle).
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Free Gifts"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Mail(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether items received from the mail are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Mail"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class PlatformsRafts(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether lookout platforms and rafts are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Lookout Platforms and Rafts"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Submarines(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether submarines are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Submarines"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class EyeReefChests(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether the chests that appear after clearing out the eye reefs are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Eye Reef Chests"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class BigOctosGunboats(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether the items dropped by Big Octos and Gunboats are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Big Octos and Gunboats"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TriforceCharts(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether the sunken treasure chests marked on Triforce Charts are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Sunken Treasure (From Triforce Charts)"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TreasureCharts(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether the sunken treasure chests marked on Treasure Charts are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Sunken Treasure (From Treasure Charts)"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ExpensivePurchases(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether items that cost many Rupees are randomized (Rock Spire shop, auctions, Tingle's letter,
							 | 
						||
| 
								 | 
							
								    trading quest).
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Expensive Purchases"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class IslandPuzzles(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This controls whether various island puzzles are randomized (e.g., chests hidden in unusual places).
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Island Puzzles"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Misc(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Miscellaneous locations that don't fit into any of the above categories (outdoors chests, wind shrine, Cyclos, etc).
							 | 
						||
| 
								 | 
							
								    This controls whether these are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Miscellaneous"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class DungeonItem(Choice):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    This is the base class for the shuffle options for dungeon items.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    value: int
							 | 
						||
| 
								 | 
							
								    option_startwith = 0
							 | 
						||
| 
								 | 
							
								    option_vanilla = 1
							 | 
						||
| 
								 | 
							
								    option_dungeon = 2
							 | 
						||
| 
								 | 
							
								    option_any_dungeon = 3
							 | 
						||
| 
								 | 
							
								    option_local = 4
							 | 
						||
| 
								 | 
							
								    option_keylunacy = 5
							 | 
						||
| 
								 | 
							
								    default = 2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @property
							 | 
						||
| 
								 | 
							
								    def in_dungeon(self) -> bool:
							 | 
						||
| 
								 | 
							
								        """
							 | 
						||
| 
								 | 
							
								        Return whether the item should be shuffled into a dungeon.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        :return: Whether the item is shuffled into a dungeon.
							 | 
						||
| 
								 | 
							
								        """
							 | 
						||
| 
								 | 
							
								        return self.value in (2, 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomizeMapCompass(DungeonItem):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Controls how dungeon maps and compasses are randomized.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    - **Start With Maps & Compasses:** You will start the game with the dungeon maps and compasses for all dungeons.
							 | 
						||
| 
								 | 
							
								    - **Vanilla Maps & Compasses:** Dungeon maps and compasses will be kept in their vanilla location (non-randomized).
							 | 
						||
| 
								 | 
							
								    - **Own Dungeon Maps & Compasses:** Dungeon maps and compasses will be randomized locally within their own dungeon.
							 | 
						||
| 
								 | 
							
								    - **Any Dungeon Maps & Compasses:** Dungeon maps and compasses will be randomized locally within any dungeon.
							 | 
						||
| 
								 | 
							
								    - **Local Maps & Compasses:** Dungeon maps and compasses will be randomized locally anywhere.
							 | 
						||
| 
								 | 
							
								    - **Key-Lunacy:** Dungeon maps and compasses can be found anywhere, without restriction.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    item_name_group = "Dungeon Items"
							 | 
						||
| 
								 | 
							
								    display_name = "Randomize Maps & Compasses"
							 | 
						||
| 
								 | 
							
								    default = 2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomizeSmallKeys(DungeonItem):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Controls how small keys are randomized.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    - **Start With Small Keys:** You will start the game with the small keys for all dungeons.
							 | 
						||
| 
								 | 
							
								    - **Vanilla Small Keys:** Small keys will be kept in their vanilla location (non-randomized).
							 | 
						||
| 
								 | 
							
								    - **Own Dungeon Small Keys:** Small keys will be randomized locally within their own dungeon.
							 | 
						||
| 
								 | 
							
								    - **Any Dungeon Small Keys:** Small keys will be randomized locally within any dungeon.
							 | 
						||
| 
								 | 
							
								    - **Local Small Keys:** Small keys will be randomized locally anywhere.
							 | 
						||
| 
								 | 
							
								    - **Key-Lunacy:** Small keys can be found in any progression location, if dungeons are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    item_name_group = "Small Keys"
							 | 
						||
| 
								 | 
							
								    display_name = "Randomize Small Keys"
							 | 
						||
| 
								 | 
							
								    default = 2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomizeBigKeys(DungeonItem):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Controls how big keys are randomized.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    - **Start With Big Keys:** You will start the game with the big keys for all dungeons.
							 | 
						||
| 
								 | 
							
								    - **Vanilla Big Keys:** Big keys will be kept in their vanilla location (non-randomized).
							 | 
						||
| 
								 | 
							
								    - **Own Dungeon Big Keys:** Big keys will be randomized locally within their own dungeon.
							 | 
						||
| 
								 | 
							
								    - **Any Dungeon Big Keys:** Big keys will be randomized locally within any dungeon.
							 | 
						||
| 
								 | 
							
								    - **Local Big Keys:** Big keys will be randomized locally anywhere.
							 | 
						||
| 
								 | 
							
								    - **Key-Lunacy:** Big keys can be found in any progression location, if dungeons are randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    item_name_group = "Big Keys"
							 | 
						||
| 
								 | 
							
								    display_name = "Randomize Big Keys"
							 | 
						||
| 
								 | 
							
								    default = 2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SwordMode(Choice):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Controls whether you start with the Hero's Sword, the Hero's Sword is randomized, or if there are no swords in the
							 | 
						||
| 
								 | 
							
								    entire game.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    - **Start with Hero's Sword:** You will start the game with the basic Hero's Sword already in your inventory.
							 | 
						||
| 
								 | 
							
								    - **No Starting Sword:** You will start the game with no sword, and have to find it somewhere in the world like
							 | 
						||
| 
								 | 
							
								      other randomized items.
							 | 
						||
| 
								 | 
							
								    - **Swords Optional:** You will start the game with no sword, but they'll still be randomized. However, they are not
							 | 
						||
| 
								 | 
							
								      necessary to beat the game. The Hyrule Barrier will be gone, Phantom Ganon in FF is vulnerable to Skull Hammer,
							 | 
						||
| 
								 | 
							
								      and the logic does not expect you to have a sword.
							 | 
						||
| 
								 | 
							
								    - **Swordless:** You will start the game with no sword, and won't be able to find it anywhere. You have to beat the
							 | 
						||
| 
								 | 
							
								      entire game using other items as weapons instead of the sword. (Note that Phantom Ganon in FF becomes vulnerable
							 | 
						||
| 
								 | 
							
								      to Skull Hammer in this mode.)
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Sword Mode"
							 | 
						||
| 
								 | 
							
								    option_start_with_sword = 0
							 | 
						||
| 
								 | 
							
								    option_no_starting_sword = 1
							 | 
						||
| 
								 | 
							
								    option_swords_optional = 2
							 | 
						||
| 
								 | 
							
								    option_swordless = 3
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RequiredBosses(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    In this mode, you will not be allowed to beat the game until certain randomly-chosen bosses are defeated. Nothing in
							 | 
						||
| 
								 | 
							
								    dungeons for other bosses will ever be required.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    You can see which islands have the required bosses on them by opening the sea chart and checking which islands have
							 | 
						||
| 
								 | 
							
								    blue quest markers.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Required Bosses Mode"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class NumRequiredBosses(Range):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Select the number of randomly-chosen bosses that are required in Required Bosses Mode.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    The door to Puppet Ganon will not unlock until you've defeated all of these bosses. Nothing in dungeons for other
							 | 
						||
| 
								 | 
							
								    bosses will ever be required.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Number of Required Bosses"
							 | 
						||
| 
								 | 
							
								    range_start = 1
							 | 
						||
| 
								 | 
							
								    range_end = 6
							 | 
						||
| 
								 | 
							
								    default = 4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class IncludedDungeons(OptionSet):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    A list of dungeons that should always be included when required bosses mode is on.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Included Dungeons"
							 | 
						||
| 
								 | 
							
								    valid_keys = frozenset(DUNGEON_NAMES)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ExcludedDungeons(OptionSet):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    A list of dungeons that should always be excluded when required bosses mode is on.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Excluded Dungeons"
							 | 
						||
| 
								 | 
							
								    valid_keys = frozenset(DUNGEON_NAMES)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ChestTypeMatchesContents(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Changes the chest type to reflect its contents. A metal chest has a progress item, a wooden chest has a non-progress
							 | 
						||
| 
								 | 
							
								    item or a consumable, and a green chest has a potentially required dungeon key.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Chest Type Matches Contents"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TrapChests(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    **DEV NOTE:** This option is currently unimplemented and will be ignored.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Allows the randomizer to place several trapped chests across the game that do not give you items. Perfect for
							 | 
						||
| 
								 | 
							
								    spicing up any run!
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Enable Trap Chests"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class HeroMode(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    In Hero Mode, you take four times more damage than normal and heart refills will not drop.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Hero Mode"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class LogicObscurity(Choice):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Obscure tricks are ways of obtaining items that are not obvious and may involve thinking outside the box.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    This option controls the maximum difficulty of obscure tricks the randomizer will require you to do to beat the
							 | 
						||
| 
								 | 
							
								    game.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Obscure Tricks Required"
							 | 
						||
| 
								 | 
							
								    option_none = 0
							 | 
						||
| 
								 | 
							
								    option_normal = 1
							 | 
						||
| 
								 | 
							
								    option_hard = 2
							 | 
						||
| 
								 | 
							
								    option_very_hard = 3
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class LogicPrecision(Choice):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Precise tricks are ways of obtaining items that involve difficult inputs such as accurate aiming or perfect timing.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    This option controls the maximum difficulty of precise tricks the randomizer will require you to do to beat the
							 | 
						||
| 
								 | 
							
								    game.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Precise Tricks Required"
							 | 
						||
| 
								 | 
							
								    option_none = 0
							 | 
						||
| 
								 | 
							
								    option_normal = 1
							 | 
						||
| 
								 | 
							
								    option_hard = 2
							 | 
						||
| 
								 | 
							
								    option_very_hard = 3
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class EnableTunerLogic(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    If enabled, the randomizer can logically expect the Tingle Tuner for Tingle Chests.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    The randomizer behavior of logically expecting Bombs/bomb flowers to spawn in Tingle Chests remains unchanged.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Enable Tuner Logic"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomizeDungeonEntrances(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Shuffles around which dungeon entrances take you into which dungeons.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    (No effect on Forsaken Fortress or Ganon's Tower.)
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Randomize Dungeons"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomizeSecretCavesEntrances(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Shuffles around which secret cave entrances take you into which secret caves.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Randomize Secret Caves"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomizeMinibossEntrances(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Allows dungeon miniboss doors to act as entrances to be randomized.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    If on with random dungeon entrances, dungeons may nest within each other, forming chains of connected dungeons.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Randomize Nested Minibosses"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomizeBossEntrances(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Allows dungeon boss doors to act as entrances to be randomized.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    If on with random dungeon entrances, dungeons may nest within each other, forming chains of connected dungeons.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Randomize Nested Bosses"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomizeSecretCaveInnerEntrances(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Allows the pit in Ice Ring Isle's secret cave and the rear exit out of Cliff Plateau Isles' secret cave to act as
							 | 
						||
| 
								 | 
							
								    entrances to be randomized."""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Randomize Inner Secret Caves"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomizeFairyFountainEntrances(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Allows the pits that lead down into Fairy Fountains to act as entrances to be randomized.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Randomize Fairy Fountains"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class MixEntrances(Choice):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Controls how the different types (pools) of randomized entrances should be shuffled.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    - **Separate Pools:** Each pool of randomized entrances will shuffle into itself (e.g., dungeons into dungeons).
							 | 
						||
| 
								 | 
							
								    - **Mix Pools:** All pools of randomized entrances will be combined into one pool to be shuffled.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Mix Entrances"
							 | 
						||
| 
								 | 
							
								    option_separate_pools = 0
							 | 
						||
| 
								 | 
							
								    option_mix_pools = 1
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomizeEnemies(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Randomizes the placement of non-boss enemies.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    This option is an *incomplete* option from the base randomizer and **may result in unbeatable seeds! Use at your own
							 | 
						||
| 
								 | 
							
								    risk!**
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Randomize Enemies"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# class RandomizeMusic(Toggle):
							 | 
						||
| 
								 | 
							
								#     """
							 | 
						||
| 
								 | 
							
								#     Shuffles around all the music in the game. This affects background music, combat music, fanfares, etc.
							 | 
						||
| 
								 | 
							
								#     """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#     display_name = "Randomize Music"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomizeStartingIsland(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Randomizes which island you start the game on.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Randomize Starting Island"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomizeCharts(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Randomizes which sector is drawn on each Triforce/Treasure Chart.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Randomize Charts"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class HoHoHints(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    **DEV NOTE:** This option is currently unimplemented and will be ignored.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Places hints on Old Man Ho Ho. Old Man Ho Ho appears at 10 different islands in the game. Talk to Old Man Ho Ho to
							 | 
						||
| 
								 | 
							
								    get hints.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Place Hints on Old Man Ho Ho"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class FishmenHints(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    **DEV NOTE:** This option is currently unimplemented and will be ignored.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Places hints on the fishmen. There is one fishman at each of the 49 islands of the Great Sea. Each fishman must be
							 | 
						||
| 
								 | 
							
								    fed an All-Purpose Bait before he will give a hint.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Place Hints on Fishmen"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class KoRLHints(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    **DEV NOTE:** This option is currently unimplemented and will be ignored.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Places hints on the King of Red Lions. Talk to the King of Red Lions to get hints.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Place Hints on King of Red Lions"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class NumItemHints(Range):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    **DEV NOTE:** This option is currently unimplemented and will be ignored.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    The number of item hints that will be placed. Item hints tell you which area contains a particular progress item in
							 | 
						||
| 
								 | 
							
								    this seed.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    If multiple hint placement options are selected, the hint count will be split evenly among the placement options.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Item Hints"
							 | 
						||
| 
								 | 
							
								    range_start = 0
							 | 
						||
| 
								 | 
							
								    range_end = 15
							 | 
						||
| 
								 | 
							
								    default = 15
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class NumLocationHints(Range):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    **DEV NOTE:** This option is currently unimplemented and will be ignored.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    The number of location hints that will be placed. Location hints tell you what item is at a specific location in
							 | 
						||
| 
								 | 
							
								    this seed.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    If multiple hint placement options are selected, the hint count will be split evenly among the placement options.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Location Hints"
							 | 
						||
| 
								 | 
							
								    range_start = 0
							 | 
						||
| 
								 | 
							
								    range_end = 15
							 | 
						||
| 
								 | 
							
								    default = 5
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class NumBarrenHints(Range):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    **DEV NOTE:** This option is currently unimplemented and will be ignored.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    The number of barren hints that will be placed. Barren hints tell you that an area does not contain any required
							 | 
						||
| 
								 | 
							
								    items in this seed.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    If multiple hint placement options are selected, the hint count will be split evenly among the placement options.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Barren Hints"
							 | 
						||
| 
								 | 
							
								    range_start = 0
							 | 
						||
| 
								 | 
							
								    range_end = 15
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class NumPathHints(Range):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    **DEV NOTE:** This option is currently unimplemented and will be ignored.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    The number of path hints that will be placed. Path hints tell you that an area contains an item that is required to
							 | 
						||
| 
								 | 
							
								    reach a particular goal in this seed.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    If multiple hint placement options are selected, the hint count will be split evenly among the placement options.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Path Hints"
							 | 
						||
| 
								 | 
							
								    range_start = 0
							 | 
						||
| 
								 | 
							
								    range_end = 15
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class PrioritizeRemoteHints(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    **DEV NOTE:** This option is currently unimplemented and will be ignored.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    When this option is selected, certain locations that are out of the way and time-consuming to complete will take
							 | 
						||
| 
								 | 
							
								    precedence over normal location hints."""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Prioritize Remote Location Hints"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SwiftSail(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Sailing speed is doubled and the direction of the wind is always at your back as long as the sail is out.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Swift Sail"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class InstantTextBoxes(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Text appears instantly. Also, the B button is changed to instantly skip through text as long as you hold it down.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Instant Text Boxes"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RevealFullSeaChart(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Start the game with the sea chart fully drawn out.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Reveal Full Sea Chart"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class AddShortcutWarpsBetweenDungeons(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Adds new warp pots that act as shortcuts connecting dungeons to each other directly. (DRC, FW, TotG, and separately
							 | 
						||
| 
								 | 
							
								    FF, ET, WT.)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Each pot must be unlocked before it can be used, so you cannot use them to access dungeons
							 | 
						||
| 
								 | 
							
								    you wouldn't already have access to.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Add Shortcut Warps Between Dungeons"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SkipRematchBosses(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Removes the door in Ganon's Tower that only unlocks when you defeat the rematch versions of Gohma, Kalle Demos,
							 | 
						||
| 
								 | 
							
								    Jalhalla, and Molgera.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Skip Boss Rematches"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RemoveMusic(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Mutes all ingame music.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Remove Music"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@dataclass
							 | 
						||
| 
								 | 
							
								class TWWOptions(PerGameCommonOptions):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    A data class that encapsulates all configuration options for The Wind Waker.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    start_inventory_from_pool: StartInventoryPool
							 | 
						||
| 
								 | 
							
								    progression_dungeons: Dungeons
							 | 
						||
| 
								 | 
							
								    progression_tingle_chests: TingleChests
							 | 
						||
| 
								 | 
							
								    progression_dungeon_secrets: DungeonSecrets
							 | 
						||
| 
								 | 
							
								    progression_puzzle_secret_caves: PuzzleSecretCaves
							 | 
						||
| 
								 | 
							
								    progression_combat_secret_caves: CombatSecretCaves
							 | 
						||
| 
								 | 
							
								    progression_savage_labyrinth: SavageLabyrinth
							 | 
						||
| 
								 | 
							
								    progression_great_fairies: GreatFairies
							 | 
						||
| 
								 | 
							
								    progression_short_sidequests: ShortSidequests
							 | 
						||
| 
								 | 
							
								    progression_long_sidequests: LongSidequests
							 | 
						||
| 
								 | 
							
								    progression_spoils_trading: SpoilsTrading
							 | 
						||
| 
								 | 
							
								    progression_minigames: Minigames
							 | 
						||
| 
								 | 
							
								    progression_battlesquid: Battlesquid
							 | 
						||
| 
								 | 
							
								    progression_free_gifts: FreeGifts
							 | 
						||
| 
								 | 
							
								    progression_mail: Mail
							 | 
						||
| 
								 | 
							
								    progression_platforms_rafts: PlatformsRafts
							 | 
						||
| 
								 | 
							
								    progression_submarines: Submarines
							 | 
						||
| 
								 | 
							
								    progression_eye_reef_chests: EyeReefChests
							 | 
						||
| 
								 | 
							
								    progression_big_octos_gunboats: BigOctosGunboats
							 | 
						||
| 
								 | 
							
								    progression_triforce_charts: TriforceCharts
							 | 
						||
| 
								 | 
							
								    progression_treasure_charts: TreasureCharts
							 | 
						||
| 
								 | 
							
								    progression_expensive_purchases: ExpensivePurchases
							 | 
						||
| 
								 | 
							
								    progression_island_puzzles: IslandPuzzles
							 | 
						||
| 
								 | 
							
								    progression_misc: Misc
							 | 
						||
| 
								 | 
							
								    randomize_mapcompass: RandomizeMapCompass
							 | 
						||
| 
								 | 
							
								    randomize_smallkeys: RandomizeSmallKeys
							 | 
						||
| 
								 | 
							
								    randomize_bigkeys: RandomizeBigKeys
							 | 
						||
| 
								 | 
							
								    sword_mode: SwordMode
							 | 
						||
| 
								 | 
							
								    required_bosses: RequiredBosses
							 | 
						||
| 
								 | 
							
								    num_required_bosses: NumRequiredBosses
							 | 
						||
| 
								 | 
							
								    included_dungeons: IncludedDungeons
							 | 
						||
| 
								 | 
							
								    excluded_dungeons: ExcludedDungeons
							 | 
						||
| 
								 | 
							
								    chest_type_matches_contents: ChestTypeMatchesContents
							 | 
						||
| 
								 | 
							
								    # trap_chests: TrapChests
							 | 
						||
| 
								 | 
							
								    hero_mode: HeroMode
							 | 
						||
| 
								 | 
							
								    logic_obscurity: LogicObscurity
							 | 
						||
| 
								 | 
							
								    logic_precision: LogicPrecision
							 | 
						||
| 
								 | 
							
								    enable_tuner_logic: EnableTunerLogic
							 | 
						||
| 
								 | 
							
								    randomize_dungeon_entrances: RandomizeDungeonEntrances
							 | 
						||
| 
								 | 
							
								    randomize_secret_cave_entrances: RandomizeSecretCavesEntrances
							 | 
						||
| 
								 | 
							
								    randomize_miniboss_entrances: RandomizeMinibossEntrances
							 | 
						||
| 
								 | 
							
								    randomize_boss_entrances: RandomizeBossEntrances
							 | 
						||
| 
								 | 
							
								    randomize_secret_cave_inner_entrances: RandomizeSecretCaveInnerEntrances
							 | 
						||
| 
								 | 
							
								    randomize_fairy_fountain_entrances: RandomizeFairyFountainEntrances
							 | 
						||
| 
								 | 
							
								    mix_entrances: MixEntrances
							 | 
						||
| 
								 | 
							
								    randomize_enemies: RandomizeEnemies
							 | 
						||
| 
								 | 
							
								    # randomize_music: RandomizeMusic
							 | 
						||
| 
								 | 
							
								    randomize_starting_island: RandomizeStartingIsland
							 | 
						||
| 
								 | 
							
								    randomize_charts: RandomizeCharts
							 | 
						||
| 
								 | 
							
								    # hoho_hints: HoHoHints
							 | 
						||
| 
								 | 
							
								    # fishmen_hints: FishmenHints
							 | 
						||
| 
								 | 
							
								    # korl_hints: KoRLHints
							 | 
						||
| 
								 | 
							
								    # num_item_hints: NumItemHints
							 | 
						||
| 
								 | 
							
								    # num_location_hints: NumLocationHints
							 | 
						||
| 
								 | 
							
								    # num_barren_hints: NumBarrenHints
							 | 
						||
| 
								 | 
							
								    # num_path_hints: NumPathHints
							 | 
						||
| 
								 | 
							
								    # prioritize_remote_hints: PrioritizeRemoteHints
							 | 
						||
| 
								 | 
							
								    swift_sail: SwiftSail
							 | 
						||
| 
								 | 
							
								    instant_text_boxes: InstantTextBoxes
							 | 
						||
| 
								 | 
							
								    reveal_full_sea_chart: RevealFullSeaChart
							 | 
						||
| 
								 | 
							
								    add_shortcut_warps_between_dungeons: AddShortcutWarpsBetweenDungeons
							 | 
						||
| 
								 | 
							
								    skip_rematch_bosses: SkipRematchBosses
							 | 
						||
| 
								 | 
							
								    remove_music: RemoveMusic
							 | 
						||
| 
								 | 
							
								    death_link: DeathLink
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								tww_option_groups: list[OptionGroup] = [
							 | 
						||
| 
								 | 
							
								    OptionGroup(
							 | 
						||
| 
								 | 
							
								        "Progression Locations",
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								            Dungeons,
							 | 
						||
| 
								 | 
							
								            DungeonSecrets,
							 | 
						||
| 
								 | 
							
								            TingleChests,
							 | 
						||
| 
								 | 
							
								            PuzzleSecretCaves,
							 | 
						||
| 
								 | 
							
								            CombatSecretCaves,
							 | 
						||
| 
								 | 
							
								            SavageLabyrinth,
							 | 
						||
| 
								 | 
							
								            IslandPuzzles,
							 | 
						||
| 
								 | 
							
								            GreatFairies,
							 | 
						||
| 
								 | 
							
								            Submarines,
							 | 
						||
| 
								 | 
							
								            PlatformsRafts,
							 | 
						||
| 
								 | 
							
								            ShortSidequests,
							 | 
						||
| 
								 | 
							
								            LongSidequests,
							 | 
						||
| 
								 | 
							
								            SpoilsTrading,
							 | 
						||
| 
								 | 
							
								            EyeReefChests,
							 | 
						||
| 
								 | 
							
								            BigOctosGunboats,
							 | 
						||
| 
								 | 
							
								            Misc,
							 | 
						||
| 
								 | 
							
								            Minigames,
							 | 
						||
| 
								 | 
							
								            Battlesquid,
							 | 
						||
| 
								 | 
							
								            FreeGifts,
							 | 
						||
| 
								 | 
							
								            Mail,
							 | 
						||
| 
								 | 
							
								            ExpensivePurchases,
							 | 
						||
| 
								 | 
							
								            TriforceCharts,
							 | 
						||
| 
								 | 
							
								            TreasureCharts,
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								    ),
							 | 
						||
| 
								 | 
							
								    OptionGroup(
							 | 
						||
| 
								 | 
							
								        "Item Randomizer Modes",
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								            SwordMode,
							 | 
						||
| 
								 | 
							
								            RandomizeMapCompass,
							 | 
						||
| 
								 | 
							
								            RandomizeSmallKeys,
							 | 
						||
| 
								 | 
							
								            RandomizeBigKeys,
							 | 
						||
| 
								 | 
							
								            ChestTypeMatchesContents,
							 | 
						||
| 
								 | 
							
								            # TrapChests,
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								    ),
							 | 
						||
| 
								 | 
							
								    OptionGroup(
							 | 
						||
| 
								 | 
							
								        "Entrance Randomizer Options",
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								            RandomizeDungeonEntrances,
							 | 
						||
| 
								 | 
							
								            RandomizeBossEntrances,
							 | 
						||
| 
								 | 
							
								            RandomizeMinibossEntrances,
							 | 
						||
| 
								 | 
							
								            RandomizeSecretCavesEntrances,
							 | 
						||
| 
								 | 
							
								            RandomizeSecretCaveInnerEntrances,
							 | 
						||
| 
								 | 
							
								            RandomizeFairyFountainEntrances,
							 | 
						||
| 
								 | 
							
								            MixEntrances,
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								    ),
							 | 
						||
| 
								 | 
							
								    OptionGroup(
							 | 
						||
| 
								 | 
							
								        "Other Randomizers",
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								            RandomizeStartingIsland,
							 | 
						||
| 
								 | 
							
								            RandomizeCharts,
							 | 
						||
| 
								 | 
							
								            # RandomizeMusic,
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								    ),
							 | 
						||
| 
								 | 
							
								    OptionGroup(
							 | 
						||
| 
								 | 
							
								        "Convenience Tweaks",
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								            SwiftSail,
							 | 
						||
| 
								 | 
							
								            InstantTextBoxes,
							 | 
						||
| 
								 | 
							
								            RevealFullSeaChart,
							 | 
						||
| 
								 | 
							
								            SkipRematchBosses,
							 | 
						||
| 
								 | 
							
								            AddShortcutWarpsBetweenDungeons,
							 | 
						||
| 
								 | 
							
								            RemoveMusic,
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								    ),
							 | 
						||
| 
								 | 
							
								    OptionGroup(
							 | 
						||
| 
								 | 
							
								        "Required Bosses",
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								            RequiredBosses,
							 | 
						||
| 
								 | 
							
								            NumRequiredBosses,
							 | 
						||
| 
								 | 
							
								            IncludedDungeons,
							 | 
						||
| 
								 | 
							
								            ExcludedDungeons,
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        start_collapsed=True,
							 | 
						||
| 
								 | 
							
								    ),
							 | 
						||
| 
								 | 
							
								    OptionGroup(
							 | 
						||
| 
								 | 
							
								        "Difficulty Options",
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								            HeroMode,
							 | 
						||
| 
								 | 
							
								            LogicObscurity,
							 | 
						||
| 
								 | 
							
								            LogicPrecision,
							 | 
						||
| 
								 | 
							
								            EnableTunerLogic,
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        start_collapsed=True,
							 | 
						||
| 
								 | 
							
								    ),
							 | 
						||
| 
								 | 
							
								    OptionGroup(
							 | 
						||
| 
								 | 
							
								        "Work-in-Progress Options",
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								            RandomizeEnemies,
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        start_collapsed=True,
							 | 
						||
| 
								 | 
							
								    ),
							 | 
						||
| 
								 | 
							
								]
							 |