Ocarina of Time 7.0 (#1277)

## What is this fixing or adding?
- Adds the majority of OoTR 7.0 features:
  - Pot shuffle, Freestanding item shuffle, Crate shuffle, Beehive shuffle
  - Key rings mode
  - Dungeon shortcuts to speed up dungeons
  - "Regional" shuffle for dungeon items
  - New options for shop pricing in shopsanity
  - Expanded Ganon's Boss Key shuffle options
  - Pre-planted beans
  - Improved Chest Appearance Matches Contents mode
  - Blue Fire Arrows
  - Bonk self-damage
  - Finer control over MQ dungeons and spawn position randomization
- Several bugfixes as a result of the update:
  - Items recognized by the server and valid starting items are now in a 1-to-1 correspondence. In particular, starting with keys is now supported.
  - Entrance randomization success rate improved. Hopefully it is now at 100%. 

Co-authored-by: Zach Parks <zach@alliware.com>
This commit is contained in:
espeon65536
2022-12-10 21:11:40 -06:00
committed by GitHub
parent 2cdd03f786
commit aee0df5359
110 changed files with 37691 additions and 18648 deletions

View File

@@ -147,10 +147,20 @@ conditional_always = {
'Song from Ocarina of Time': lambda world: stones_required_by_settings(world) < 2,
'HF Ocarina of Time Item': lambda world: stones_required_by_settings(world) < 2,
'Sheik in Kakariko': lambda world: medallions_required_by_settings(world) < 5,
'DMT Biggoron': lambda world: world.logic_earliest_adult_trade != 'claim_check' or world.logic_latest_adult_trade != 'claim_check',
'Kak 30 Gold Skulltula Reward': lambda world: tokens_required_by_settings(world) < 30,
'Kak 40 Gold Skulltula Reward': lambda world: tokens_required_by_settings(world) < 40,
'Kak 50 Gold Skulltula Reward': lambda world: tokens_required_by_settings(world) < 50,
'DMT Biggoron': lambda world: world.adult_trade_start != {'Claim Check'},
'Kak 30 Gold Skulltula Reward': lambda world: tokens_required_by_settings(world) < 30 and '30_skulltulas' not in world.misc_hints,
'Kak 40 Gold Skulltula Reward': lambda world: tokens_required_by_settings(world) < 40 and '40_skulltulas' not in world.misc_hints,
'Kak 50 Gold Skulltula Reward': lambda world: tokens_required_by_settings(world) < 50 and '50_skulltulas' not in world.misc_hints,
}
# Entrance hints required under certain settings
conditional_entrance_always = {
'Ganons Castle Grounds -> Ganons Castle Lobby': lambda world: (world.bridge != 'open'
and (world.bridge != 'stones' or world.bridge_stones > 1)
and (world.bridge != 'medallions' or world.bridge_medallions > 1)
and (world.bridge != 'dungeons' or world.bridge_rewards > 2)
and (world.bridge != 'tokens' or world.bridge_tokens > 20)
and (world.bridge != 'hearts' or world.bridge_hearts > world.starting_hearts + 1)),
}
@@ -160,7 +170,16 @@ conditional_always = {
# @ will print the player name
# # sets color to white (currently only used for dungeon reward hints).
hintTable = {
'Triforce Piece': (["a triumph fork", "cheese", "a gold fragment"], "a Piece of the Triforce", "item"),
'Kokiri Emerald': (["a tree's farewell", "the Spiritual Stone of the Forest"], "the Kokiri Emerald", 'item'),
'Goron Ruby': (["the Gorons' hidden treasure", "the Spiritual Stone of Fire"], "the Goron Ruby", 'item'),
'Zora Sapphire': (["an engagement ring", "the Spiritual Stone of Water"], "the Zora Sapphire", 'item'),
'Light Medallion': (["Rauru's sagely power", "a yellow disc"], "the Light Medallion", 'item'),
'Forest Medallion': (["Saria's sagely power", "a green disc"], "the Forest Medallion", 'item'),
'Fire Medallion': (["Darunia's sagely power", "a red disc"], "the Fire Medallion", 'item'),
'Water Medallion': (["Ruto's sagely power", "a blue disc"], "the Water Medallion", 'item'),
'Shadow Medallion': (["Impa's sagely power", "a purple disc"], "the Shadow Medallion", 'item'),
'Spirit Medallion': (["Nabooru's sagely power", "an orange disc"], "the Spirit Medallion", 'item'),
'Triforce Piece': (["a triumph fork", "cheese", "a gold fragment"], "a Piece of the Triforce", 'item'),
'Magic Meter': (["mystic training", "pixie dust", "a green rectangle"], "a Magic Meter", 'item'),
'Double Defense': (["a white outline", "damage decrease", "strengthened love"], "Double Defense", 'item'),
'Slingshot': (["a seed shooter", "a rubberband", "a child's catapult"], "a Slingshot", 'item'),
@@ -245,11 +264,55 @@ hintTable = {
'Eyedrops': (["a vision vial"], "the Eyedrops", 'item'),
'Claim Check': (["a three day wait"], "the Claim Check", 'item'),
'Map': (["a dungeon atlas", "blueprints"], "a Map", 'item'),
'Map (Deku Tree)': (["an atlas of an ancient tree", "blueprints of an ancient tree"], "a Map of the Deku Tree", 'item'),
'Map (Dodongos Cavern)': (["an atlas of an immense cavern", "blueprints of an immense cavern"], "a Map of Dodongo's Cavern", 'item'),
'Map (Jabu Jabus Belly)': (["an atlas of the belly of a deity", "blueprints of the belly of a deity"], "a Map of Jabu Jabu's Belly", 'item'),
'Map (Forest Temple)': (["an atlas of a deep forest", "blueprints of a deep forest"], "a Map of the Forest Temple", 'item'),
'Map (Fire Temple)': (["an atlas of a high mountain", "blueprints of a high mountain"], "a Map of the Fire Temple", 'item'),
'Map (Water Temple)': (["an atlas of a vast lake", "blueprints of a vast lake"], "a Map of the Water Temple", 'item'),
'Map (Shadow Temple)': (["an atlas of the house of the dead", "blueprints of the house of the dead"], "a Map of the Shadow Temple", 'item'),
'Map (Spirit Temple)': (["an atlas of the goddess of the sand", "blueprints of the goddess of the sand"], "a Map of the Spirit Temple", 'item'),
'Map (Bottom of the Well)': (["an atlas of a shadow's prison", "blueprints of a shadow's prison"], "a Map of the Bottom of the Well", 'item'),
'Map (Ice Cavern)': (["an atlas of a frozen maze", "blueprints of a frozen maze"], "a Map of the Ice Cavern", 'item'),
'Compass': (["a treasure tracker", "a magnetic needle"], "a Compass", 'item'),
'Compass (Deku Tree)': (["a treasure tracker for an ancient tree", "a magnetic needle for an ancient tree"], "a Deku Tree Compass", 'item'),
'Compass (Dodongos Cavern)': (["a treasure tracker for an immense cavern", "a magnetic needle for an immense cavern"], "a Dodongo's Cavern Compass", 'item'),
'Compass (Jabu Jabus Belly)': (["a treasure tracker for the belly of a deity", "a magnetic needle for the belly of a deity"], "a Jabu Jabu's Belly Compass", 'item'),
'Compass (Forest Temple)': (["a treasure tracker for a deep forest", "a magnetic needle for a deep forest"], "a Forest Temple Compass", 'item'),
'Compass (Fire Temple)': (["a treasure tracker for a high mountain", "a magnetic needle for a high mountain"], "a Fire Temple Compass", 'item'),
'Compass (Water Temple)': (["a treasure tracker for a vast lake", "a magnetic needle for a vast lake"], "a Water Temple Compass", 'item'),
'Compass (Shadow Temple)': (["a treasure tracker for the house of the dead", "a magnetic needle for the house of the dead"], "a Shadow Temple Compass", 'item'),
'Compass (Spirit Temple)': (["a treasure tracker for a goddess of the sand", "a magnetic needle for a goddess of the sand"], "a Spirit Temple Compass", 'item'),
'Compass (Bottom of the Well)': (["a treasure tracker for a shadow's prison", "a magnetic needle for a shadow's prison"], "a Bottom of the Well Compass", 'item'),
'Compass (Ice Cavern)': (["a treasure tracker for a frozen maze", "a magnetic needle for a frozen maze"], "an Ice Cavern Compass", 'item'),
'BossKey': (["a master of unlocking", "a dungeon's master pass"], "a Boss Key", 'item'),
'GanonBossKey': (["a master of unlocking", "a dungeon's master pass"], "a Boss Key", 'item'),
'SmallKey': (["a tool for unlocking", "a dungeon pass", "a lock remover", "a lockpick"], "a Small Key", 'item'),
'HideoutSmallKey': (["a get out of jail free card"], "a Jail Key", 'item'),
'Boss Key (Forest Temple)': (["a master of unlocking for a deep forest", "a master pass for a deep forest"], "the Forest Temple Boss Key", 'item'),
'Boss Key (Fire Temple)': (["a master of unlocking for a high mountain", "a master pass for a high mountain"], "the Fire Temple Boss Key", 'item'),
'Boss Key (Water Temple)': (["a master of unlocking for under a vast lake", "a master pass for under a vast lake"], "the Water Temple Boss Key", 'item'),
'Boss Key (Shadow Temple)': (["a master of unlocking for the house of the dead", "a master pass for the house of the dead"], "the Shadow Temple Boss Key", 'item'),
'Boss Key (Spirit Temple)': (["a master of unlocking for a goddess of the sand", "a master pass for a goddess of the sand"], "the Spirit Temple Boss Key", 'item'),
'Boss Key (Ganons Castle)': (["an master of unlocking", "a floating dungeon's master pass"], "Ganon's Castle Boss Key", 'item'),
'Small Key (Forest Temple)': (["a tool for unlocking a deep forest", "a dungeon pass for a deep forest", "a lock remover for a deep forest", "a lockpick for a deep forest"], "a Forest Temple Small Key", 'item'),
'Small Key (Fire Temple)': (["a tool for unlocking a high mountain", "a dungeon pass for a high mountain", "a lock remover for a high mountain", "a lockpick for a high mountain"], "a Fire Temple Small Key", 'item'),
'Small Key (Water Temple)': (["a tool for unlocking a vast lake", "a dungeon pass for under a vast lake", "a lock remover for under a vast lake", "a lockpick for under a vast lake"], "a Water Temple Small Key", 'item'),
'Small Key (Shadow Temple)': (["a tool for unlocking the house of the dead", "a dungeon pass for the house of the dead", "a lock remover for the house of the dead", "a lockpick for the house of the dead"], "a Shadow Temple Small Key", 'item'),
'Small Key (Spirit Temple)': (["a tool for unlocking a goddess of the sand", "a dungeon pass for a goddess of the sand", "a lock remover for a goddess of the sand", "a lockpick for a goddess of the sand"], "a Spirit Temple Small Key", 'item'),
'Small Key (Bottom of the Well)': (["a tool for unlocking a shadow's prison", "a dungeon pass for a shadow's prison", "a lock remover for a shadow's prison", "a lockpick for a shadow's prison"], "a Bottom of the Well Small Key", 'item'),
'Small Key (Gerudo Training Ground)': (["a tool for unlocking the test of thieves", "a dungeon pass for the test of thieves", "a lock remover for the test of thieves", "a lockpick for the test of thieves"], "a Gerudo Training Ground Small Key", 'item'),
'Small Key (Ganons Castle)': (["a tool for unlocking a conquered citadel", "a dungeon pass for a conquered citadel", "a lock remover for a conquered citadel", "a lockpick for a conquered citadel"], "a Ganon's Castle Small Key", 'item'),
'Small Key (Thieves Hideout)': (["a get out of jail free card"], "a Jail Key", 'item'),
'Small Key Ring (Forest Temple)': (["a toolbox for unlocking a deep forest", "a dungeon season pass for a deep forest", "a jingling ring for a deep forest", "a skeleton key for a deep forest"], "a Forest Temple Small Key Ring", 'item'),
'Small Key Ring (Fire Temple)': (["a toolbox for unlocking a high mountain", "a dungeon season pass for a high mountain", "a jingling ring for a high mountain", "a skeleton key for a high mountain"], "a Fire Temple Small Key Ring", 'item'),
'Small Key Ring (Water Temple)': (["a toolbox for unlocking a vast lake", "a dungeon season pass for under a vast lake", "a jingling ring for under a vast lake", "a skeleton key for under a vast lake"], "a Water Temple Small Key Ring", 'item'),
'Small Key Ring (Shadow Temple)': (["a toolbox for unlocking the house of the dead", "a dungeon season pass for the house of the dead", "a jingling ring for the house of the dead", "a skeleton key for the house of the dead"], "a Shadow Temple Small Key Ring", 'item'),
'Small Key Ring (Spirit Temple)': (["a toolbox for unlocking a goddess of the sand", "a dungeon season pass for a goddess of the sand", "a jingling ring for a goddess of the sand", "a skeleton key for a goddess of the sand"], "a Spirit Temple Small Key Ring", 'item'),
'Small Key Ring (Bottom of the Well)': (["a toolbox for unlocking a shadow's prison", "a dungeon season pass for a shadow's prison", "a jingling ring for a shadow's prison", "a skeleton key for a shadow's prison"], "a Bottom of the Well Small Key Ring", 'item'),
'Small Key Ring (Gerudo Training Ground)': (["a toolbox for unlocking the test of thieves", "a dungeon season pass for the test of thieves", "a jingling ring for the test of thieves", "a skeleton key for the test of thieves"], "a Gerudo Training Ground Small Key Ring", 'item'),
'Small Key Ring (Ganons Castle)': (["a toolbox for unlocking a conquered citadel", "a dungeon season pass for a conquered citadel", "a jingling ring for a conquered citadel", "a skeleton key for a conquered citadel"], "a Ganon's Castle Small Key Ring", 'item'),
'Small Key Ring (Thieves Hideout)': (["a deck of get out of jail free cards"], "a Jail Key Ring", 'item'),
'KeyError': (["something mysterious", "an unknown treasure"], "An Error (Please Report This)", 'item'),
'Arrows (5)': (["a few danger darts", "a few sharp shafts"], "Arrows (5 pieces)", 'item'),
'Arrows (10)': (["some danger darts", "some sharp shafts"], "Arrows (10 pieces)", 'item'),
@@ -259,6 +322,7 @@ hintTable = {
'Bombs (20)': (["lots-o-explosives", "plenty of blast balls"], "Bombs (20 pieces)", 'item'),
'Ice Trap': (["a gift from Ganon", "a chilling discovery", "frosty fun"], "an Ice Trap", 'item'),
'Magic Bean': (["a wizardly legume"], "a Magic Bean", 'item'),
'Buy Magic Bean': (["a wizardly legume"], "a Magic Bean", 'item'),
'Magic Bean Pack': (["wizardly legumes"], "Magic Beans", 'item'),
'Bombchus': (["mice bombs", "proximity mice", "wall crawlers", "trail blazers"], "Bombchus", 'item'),
'Bombchus (5)': (["a few mice bombs", "a few proximity mice", "a few wall crawlers", "a few trail blazers"], "Bombchus (5 pieces)", 'item'),
@@ -306,12 +370,17 @@ hintTable = {
'ZF GS Hidden Cave': ("a spider high #above the icy waters# holds", None, ['overworld', 'sometimes']),
'Wasteland Chest': (["#deep in the wasteland# is", "beneath #the sands#, flames reveal"], None, ['overworld', 'sometimes']),
'Wasteland GS': ("a #spider in the wasteland# holds", None, ['overworld', 'sometimes']),
'Royal Familys Tomb Chest': (["#flames in the royal tomb# reveal", "the #Composer Brothers hid#"], None, ['overworld', 'sometimes']),
'Graveyard Royal Familys Tomb Chest': (["#flames in the royal tomb# reveal", "the #Composer Brothers hid#"], None, ['overworld', 'sometimes']),
'ZF Bottom Freestanding PoH': ("#under the icy waters# lies", None, ['overworld', 'sometimes']),
'GC Pot Freestanding PoH': ("spinning #Goron pottery# contains", None, ['overworld', 'sometimes']),
'ZD King Zora Thawed': ("a #defrosted dignitary# gifts", "unfreezing #King Zora# grants", ['overworld', 'sometimes']),
'DMC Deku Scrub': ("a single #scrub in the crater# sells", None, ['overworld', 'sometimes']),
'DMC GS Crate': ("a spider under a #crate in the crater# holds", None, ['overworld', 'sometimes']),
'LW Target in Woods': ("shooting a #target in the woods# grants", None, ['overworld', 'sometimes']),
'ZR Frogs in the Rain': ("#frogs in a storm# gift", None, ['overworld', 'sometimes']),
'LH Lab Dive': ("a #diving experiment# is rewarded with", None, ['overworld', 'sometimes']),
'HC Great Fairy Reward': ("the #fairy of fire# holds", "a #fairy outside Hyrule Castle# holds", ['overworld', 'sometimes']),
'OGC Great Fairy Reward': ("the #fairy of strength# holds", "a #fairy outside Ganon's Castle# holds", ['overworld', 'sometimes']),
'Deku Tree MQ After Spinning Log Chest': ("a #temporal stone within a tree# contains", "a #temporal stone within the Deku Tree# contains", ['dungeon', 'sometimes']),
'Deku Tree MQ GS Basement Graves Room': ("a #spider on a ceiling in a tree# holds", "a #spider on a ceiling in the Deku Tree# holds", ['dungeon', 'sometimes']),
@@ -324,8 +393,10 @@ hintTable = {
'Fire Temple MQ Chest On Fire': ("the #Flare Dancer atop the volcano# guards a chest containing", "the #Flare Dancer atop the Fire Temple# guards a chest containing", ['dungeon', 'sometimes']),
'Fire Temple MQ GS Skull On Fire': ("a #spider under a block in the volcano# holds", "a #spider under a block in the Fire Temple# holds", ['dungeon', 'sometimes']),
'Water Temple River Chest': ("beyond the #river under the lake# waits", "beyond the #river in the Water Temple# waits", ['dungeon', 'sometimes']),
'Water Temple Central Pillar Chest': ("beneath a #tall tower under a vast lake# lies", "a chest in the #central pillar of Water Temple# contains", ['dungeon', 'sometimes']),
'Water Temple Boss Key Chest': ("dodging #rolling boulders under the lake# leads to", "dodging #rolling boulders in the Water Temple# leads to", ['dungeon', 'sometimes']),
'Water Temple GS Behind Gate': ("a spider behind a #gate under the lake# holds", "a spider behind a #gate in the Water Temple# holds", ['dungeon', 'sometimes']),
'Water Temple MQ Central Pillar Chest': ("beneath a #tall tower under a vast lake# lies", "a chest in the #central pillar of Water Temple# contains", ['dungeon', 'sometimes']),
'Water Temple MQ Freestanding Key': ("hidden in a #box under the lake# lies", "hidden in a #box in the Water Temple# lies", ['dungeon', 'sometimes']),
'Water Temple MQ GS Freestanding Key Area': ("the #locked spider under the lake# holds", "the #locked spider in the Water Temple# holds", ['dungeon', 'sometimes']),
'Water Temple MQ GS Triple Wall Torch': ("a spider behind a #gate under the lake# holds", "a spider behind a #gate in the Water Temple# holds", ['dungeon', 'sometimes']),
@@ -333,15 +404,64 @@ hintTable = {
'Gerudo Training Ground MQ Underwater Silver Rupee Chest': (["those who seek #sunken silver rupees# will find", "the #thieves' underwater training# rewards"], None, ['dungeon', 'sometimes']),
'Gerudo Training Ground Maze Path Final Chest': ("the final prize of #the thieves' training# is", None, ['dungeon', 'sometimes']),
'Gerudo Training Ground MQ Ice Arrows Chest': ("the final prize of #the thieves' training# is", None, ['dungeon', 'sometimes']),
'Bottom of the Well Lens of Truth Chest': (["the well's #grasping ghoul# hides", "a #nether dweller in the well# holds"], "#Dead Hand in the well# holds", ['dungeon', 'sometimes']),
'Bottom of the Well MQ Compass Chest': (["the well's #grasping ghoul# hides", "a #nether dweller in the well# holds"], "#Dead Hand in the well# holds", ['dungeon', 'sometimes']),
'Spirit Temple Silver Gauntlets Chest': ("the treasure #sought by Nabooru# is", "upon the #Colossus's right hand# is", ['dungeon', 'sometimes']),
'Spirit Temple Mirror Shield Chest': ("upon the #Colossus's left hand# is", None, ['dungeon', 'sometimes']),
'Spirit Temple MQ Child Hammer Switch Chest': ("a #temporal paradox in the Colossus# yields", "a #temporal paradox in the Spirit Temple# yields", ['dungeon', 'sometimes']),
'Spirit Temple MQ Symphony Room Chest': ("a #symphony in the Colossus# yields", "a #symphony in the Spirit Temple# yields", ['dungeon', 'sometimes']),
'Spirit Temple MQ GS Symphony Room': ("a #spider's symphony in the Colossus# yields", "a #spider's symphony in the Spirit Temple# yields", ['dungeon', 'sometimes']),
'Shadow Temple Invisible Floormaster Chest': ("shadows in an #invisible maze# guard", None, ['dungeon', 'sometimes']),
'Shadow Temple Freestanding Key': ("a #burning skull in the house of the dead# holds", "a #giant pot in the Shadow Temple# holds", ['dungeon', 'sometimes']),
'Shadow Temple MQ Bomb Flower Chest': ("shadows in an #invisible maze# guard", None, ['dungeon', 'sometimes']),
'Shadow Temple MQ Stalfos Room Chest': ("near an #empty pedestal within the house of the dead# lies", "#stalfos in the Shadow Temple# guard", ['dungeon', 'sometimes']),
'Ice Cavern Iron Boots Chest': ("a #monster in a frozen cavern# guards", "the #final treasure of Ice Cavern# is", ['dungeon', 'sometimes']),
'Ice Cavern MQ Iron Boots Chest': ("a #monster in a frozen cavern# guards", "the #final treasure of Ice Cavern# is", ['dungeon', 'sometimes']),
'Ganons Castle Shadow Trial Golden Gauntlets Chest': ("#deep in the test of darkness# lies", "a #like-like in Ganon's Shadow Trial# guards", ['dungeon', 'sometimes']),
'Ganons Castle MQ Shadow Trial Eye Switch Chest': ("#deep in the test of darkness# lies", "shooting an #eye switch in Ganon's Shadow Trial# reveals", ['dungeon', 'sometimes']),
'Deku Theater Rewards': ("the #Skull Mask and Mask of Truth# reward...^", None, 'dual'),
'HF Ocarina of Time Retrieval': ("during her escape, #Princess Zelda# entrusted you with both...^", "the #Ocarina of Time# rewards both...^", 'dual'),
'HF Valley Grotto': ("in a grotto with a #spider and a cow# you will find...^", None, 'dual'),
'Market Bombchu Bowling Rewards': ("at the #Bombchu Bowling Alley#, you will be rewarded with...^", None, 'dual'),
'ZR Frogs Rewards': ("the #Frogs of Zora River# will reward you with...^", None, 'dual'),
'LH Lake Lab Pool': ("inside the #lakeside lab# a person and a spider hold...^", None, 'dual'),
'LH Adult Bean Destination Checks': ("#riding the bean in Lake Hylia# leads to...^", None, 'dual'),
'GV Pieces of Heart Ledges': ("within the #valley#, the crate and waterfall conceal...^", None, 'dual'),
'GF Horseback Archery Rewards': ("the #Gerudo Horseback Archery# rewards...^", None, 'dual'),
'Colossus Nighttime GS': ("#at the Desert Colossus#, skulltulas at night hold...^", None, 'dual'),
'Graveyard Dampe Race Rewards': ("racing #Dampé's ghost# rewards...^", None, 'dual'),
'Graveyard Royal Family Tomb Contents': ("inside the #Royal Family Tomb#, you will find...^", None, 'dual'),
'DMC Child Upper Checks': ("in the #crater, a spider in a crate and a single scrub# guard...^", None, 'dual'),
'Haunted Wasteland Checks': ("deep in the #wasteland a spider and a chest# hold...^", None, 'dual'),
'Deku Tree MQ Basement GS': ("in the back of the #basement of the Great Deku Tree# two spiders hold...^", None, 'dual'),
'Dodongos Cavern Upper Business Scrubs': ("deep in #Dodongo's Cavern a pair of scrubs# sell...^", None, 'dual'),
'Dodongos Cavern MQ Larvae Room': ("amid #larvae in Dodongo's Cavern# a chest and a spider hold...^", None, 'dual'),
'Fire Temple Lower Loop': ("under the #entrance of the Fire Temple# a blocked path leads to...^", None, 'dual'),
'Fire Temple MQ Lower Loop': ("under the #entrance of the Fire Temple# a blocked path leads to...^", None, 'dual'),
'Water Temple River Loop Chests': ("#chests past a shadowy fight# in the Water Temple hold...^", "#chests past Dark Link# in the Water Temple hold...^", 'dual'),
'Water Temple River Checks': ("in the #river in the Water Temple# lies...^", None, 'dual'),
'Water Temple North Basement Checks': ("the #northern basement of the Water Temple# contains...^", None, 'dual'),
'Water Temple MQ North Basement Checks': ("the #northern basement of the Water Temple# contains...^", None, 'dual'),
'Water Temple MQ Lower Checks': ("#a chest and a crate in locked basements# in the Water Temple hold...^", None, 'dual'),
'Spirit Temple Colossus Hands': ("upon the #Colossus's right and left hands# lie...^", None, 'dual'),
'Spirit Temple Child Lower': ("between the #crawl spaces in the Spirit Temple# chests contain...^", None, 'dual'),
'Spirit Temple Child Top': ("on the path to the #right hand of the Spirit Temple# a chest and a spider hold...^", None, 'dual'),
'Spirit Temple Adult Lower': ("past a #silver block in the Spirit Temple# boulders and a melody conceal...^", None, 'dual'),
'Spirit Temple MQ Child Top': ("on the path to the #right hand of the Spirit Temple# a chest and a spider hold respectively...^", None, 'dual'),
'Spirit Temple MQ Symphony Room': ("#the symphony room# in the Spirit Temple protects...^", None, 'dual'),
'Spirit Temple MQ Throne Room GS': ("in the #nine thrones room# of the Spirit Temple spiders hold...^", None, 'dual'),
'Shadow Temple Invisible Blades Chests': ("an #invisible spinning blade# in the Shadow Temple guards...^", None, 'dual'),
'Shadow Temple Single Pot Room': ("a room containing #a single skull-shaped pot# holds...^", "a room containing a #large pot in the Shadow Temple# holds...^", 'dual'),
'Shadow Temple Spike Walls Room': ("#wooden walls# in the Shadow Temple hide...^", None, 'dual'),
'Shadow Temple MQ Upper Checks': ("#before the Truth Spinner gap# in the Shadow Temple locked chests contain...^", None, 'dual'),
'Shadow Temple MQ Invisible Blades Chests': ("an #invisible spinning blade# in the Shadow Temple guards...^", None, 'dual'),
'Shadow Temple MQ Spike Walls Room': ("#wooden walls# in the Shadow Temple hide...^", None, 'dual'),
'Bottom of the Well Inner Rooms GS': ("in the #central rooms of the well# spiders hold...^", None, 'dual'),
'Bottom of the Well Dead Hand Room': ("#Dead Hand in the well# guards...^", None, 'dual'),
'Bottom of the Well MQ Dead Hand Room': ("#Dead Hand in the well# guards...^", None, 'dual'),
'Bottom of the Well MQ Basement': ("in the #depths of the well# a spider and a chest hold...^", None, 'dual'),
'Ice Cavern Final Room': ("the #final treasures of Ice Cavern# are...^", None, 'dual'),
'Ice Cavern MQ Final Room': ("the #final treasures of Ice Cavern# are...^", None, 'dual'),
'Ganons Castle Spirit Trial Chests': ("#within the Spirit Trial#, chests contain...^", None, 'dual'),
'KF Kokiri Sword Chest': ("the #hidden treasure of the Kokiri# is", None, 'exclude'),
'KF Midos Top Left Chest': ("the #leader of the Kokiri# hides", "#inside Mido's house# is", 'exclude'),
@@ -353,7 +473,7 @@ hintTable = {
'GC Maze Right Chest': ("in #Goron City# explosives unlock", None, 'exclude'),
'GC Maze Center Chest': ("in #Goron City# explosives unlock", None, 'exclude'),
'ZD Chest': ("fire #beyond a waterfall# reveals", None, 'exclude'),
'Graveyard Hookshot Chest': ("a chest hidden by a #speedy spectre# holds", "#dead Dampé's first prize# is", 'exclude'),
'Graveyard Dampe Race Hookshot Chest': ("a chest hidden by a #speedy spectre# holds", "#dead Dampé's first prize# is", 'exclude'),
'GF Chest': ("on a #rooftop in the desert# lies", None, 'exclude'),
'Kak Redead Grotto Chest': ("#zombies beneath the earth# guard", None, 'exclude'),
'SFM Wolfos Grotto Chest': ("#wolves beneath the earth# guard", None, 'exclude'),
@@ -370,11 +490,9 @@ hintTable = {
'ToT Light Arrows Cutscene': ("the #final gift of a princess# is", None, 'exclude'),
'LW Gift from Saria': (["a #potato hoarder# holds", "a rooty tooty #flutey cutey# gifts"], "#Saria's Gift# is", 'exclude'),
'ZF Great Fairy Reward': ("the #fairy of winds# holds", None, 'exclude'),
'HC Great Fairy Reward': ("the #fairy of fire# holds", None, 'exclude'),
'Colossus Great Fairy Reward': ("the #fairy of love# holds", None, 'exclude'),
'DMT Great Fairy Reward': ("a #magical fairy# gifts", None, 'exclude'),
'DMC Great Fairy Reward': ("a #magical fairy# gifts", None, 'exclude'),
'OGC Great Fairy Reward': ("the #fairy of strength# holds", None, 'exclude'),
'Song from Impa': ("#deep in a castle#, Impa teaches", None, 'exclude'),
'Song from Malon': ("#a farm girl# sings", None, 'exclude'),
@@ -386,7 +504,6 @@ hintTable = {
'ZD Diving Minigame': ("an #unsustainable business model# gifts", "those who #dive for Zora rupees# will find", 'exclude'),
'LH Child Fishing': ("#fishing in youth# bestows", None, 'exclude'),
'LH Adult Fishing': ("#fishing in maturity# bestows", None, 'exclude'),
'LH Lab Dive': ("a #diving experiment# is rewarded with", None, 'exclude'),
'GC Rolling Goron as Adult': ("#comforting yourself# provides", "#reassuring a young Goron# is rewarded with", 'exclude'),
'Market Bombchu Bowling First Prize': ("the #first explosive prize# is", None, 'exclude'),
'Market Bombchu Bowling Second Prize': ("the #second explosive prize# is", None, 'exclude'),
@@ -395,17 +512,16 @@ hintTable = {
'Kak 10 Gold Skulltula Reward': (["#10 bug badges# rewards", "#10 spider souls# yields", "#10 auriferous arachnids# lead to"], "slaying #10 Gold Skulltulas# reveals", 'exclude'),
'Kak Man on Roof': ("a #rooftop wanderer# holds", None, 'exclude'),
'ZR Magic Bean Salesman': ("a seller of #colorful crops# has", "a #bean seller# offers", 'exclude'),
'ZR Frogs in the Rain': ("#frogs in a storm# gift", None, 'exclude'),
'GF HBA 1000 Points': ("scoring 1000 in #horseback archery# grants", None, 'exclude'),
'Market Shooting Gallery Reward': ("#shooting in youth# grants", None, 'exclude'),
'Kak Shooting Gallery Reward': ("#shooting in maturity# grants", None, 'exclude'),
'LW Target in Woods': ("shooting a #target in the woods# grants", None, 'exclude'),
'Kak Anju as Adult': ("a #chicken caretaker# offers adults", None, 'exclude'),
'LLR Talons Chickens': ("#finding Super Cuccos# is rewarded with", None, 'exclude'),
'GC Rolling Goron as Child': ("the prize offered by a #large rolling Goron# is", None, 'exclude'),
'LH Underwater Item': ("the #sunken treasure in a lake# is", None, 'exclude'),
'Hideout Gerudo Membership Card': ("#rescuing captured carpenters# is rewarded with", None, 'exclude'),
'Wasteland Bombchu Salesman': ("a #carpet guru# sells", None, 'exclude'),
'GC Medigoron': ("#Medigoron# sells", None, 'exclude'),
'Kak Impas House Freestanding PoH': ("#imprisoned in a house# lies", None, 'exclude'),
'HF Tektite Grotto Freestanding PoH': ("#deep underwater in a hole# is", None, 'exclude'),
@@ -424,10 +540,16 @@ hintTable = {
'DMT Freestanding PoH': ("above a #mountain cavern entrance# is", None, 'exclude'),
'DMC Wall Freestanding PoH': ("nestled in a #volcanic wall# is", None, 'exclude'),
'DMC Volcano Freestanding PoH': ("obscured by #volcanic ash# is", None, 'exclude'),
'Hideout Jail Guard (1 Torch)': ("#defeating Gerudo guards# reveals", None, 'exclude'),
'Hideout Jail Guard (2 Torches)': ("#defeating Gerudo guards# reveals", None, 'exclude'),
'Hideout Jail Guard (3 Torches)': ("#defeating Gerudo guards# reveals", None, 'exclude'),
'Hideout Jail Guard (4 Torches)': ("#defeating Gerudo guards# reveals", None, 'exclude'),
'Hideout 1 Torch Jail Gerudo Key': ("#defeating Gerudo guards# reveals", None, 'exclude'),
'Hideout 2 Torches Jail Gerudo Key': ("#defeating Gerudo guards# reveals", None, 'exclude'),
'Hideout 3 Torches Jail Gerudo Key': ("#defeating Gerudo guards# reveals", None, 'exclude'),
'Hideout 4 Torches Jail Gerudo Key': ("#defeating Gerudo guards# reveals", None, 'exclude'),
'ZR Frogs Zeldas Lullaby': ("after hearing #Zelda's Lullaby, frogs gift#", None, 'exclude'),
'ZR Frogs Eponas Song': ("after hearing #Epona's Song, frogs gift#", None, 'exclude'),
'ZR Frogs Sarias Song': ("after hearing #Saria's Song, frogs gift#", None, 'exclude'),
'ZR Frogs Suns Song': ("after hearing the #Sun's Song, frogs gift#", None, 'exclude'),
'ZR Frogs Song of Time': ("after hearing the #Song of Time, frogs gift#", None, 'exclude'),
'Deku Tree Map Chest': ("in the #center of the Deku Tree# lies", None, 'exclude'),
'Deku Tree Slingshot Chest': ("the #treasure guarded by a scrub# in the Deku Tree is", None, 'exclude'),
@@ -480,13 +602,14 @@ hintTable = {
'Forest Temple Raised Island Courtyard Chest': ("a #chest on a small island# in the Forest Temple holds", None, 'exclude'),
'Forest Temple Falling Ceiling Room Chest': ("beneath a #checkerboard falling ceiling# lies", None, 'exclude'),
'Forest Temple Eye Switch Chest': ("a #sharp eye# will spot", "#blocks of stone# in the Forest Temple surround", 'exclude'),
'Forest Temple Boss Key Chest': ("a #turned trunk# contains", None, 'exclude'),
'Forest Temple Floormaster Chest': ("deep in the forest #shadows guard a chest# containing", None, 'exclude'),
'Forest Temple Bow Chest': ("an #army of the dead# guards", "#Stalfos deep in the Forest Temple# guard", 'exclude'),
'Forest Temple Red Poe Chest': ("#Joelle# guards", "a #red ghost# guards", 'exclude'),
'Forest Temple Blue Poe Chest': ("#Beth# guards", "a #blue ghost# guards", 'exclude'),
'Forest Temple Basement Chest': ("#revolving walls# in the Forest Temple conceal", None, 'exclude'),
'Forest Temple Boss Key Chest': ("a #turned trunk# contains", "a #sideways chest in the Forest Temple# hides", 'exclude'),
'Forest Temple MQ Boss Key Chest': ("a #turned trunk# contains", "a #sideways chest in the Forest Temple# hides", 'exclude'),
'Forest Temple MQ First Room Chest': ("a #tree in the Forest Temple# supports", None, 'exclude'),
'Forest Temple MQ Wolfos Chest': ("#defeating enemies beneath a falling ceiling# in Forest Temple yields", None, 'exclude'),
'Forest Temple MQ Bow Chest': ("an #army of the dead# guards", "#Stalfos deep in the Forest Temple# guard", 'exclude'),
@@ -498,7 +621,6 @@ hintTable = {
'Forest Temple MQ Falling Ceiling Room Chest': ("beneath a #checkerboard falling ceiling# lies", None, 'exclude'),
'Forest Temple MQ Basement Chest': ("#revolving walls# in the Forest Temple conceal", None, 'exclude'),
'Forest Temple MQ Redead Chest': ("deep in the forest #undead guard a chest# containing", None, 'exclude'),
'Forest Temple MQ Boss Key Chest': ("a #turned trunk# contains", None, 'exclude'),
'Fire Temple Near Boss Chest': ("#near a dragon# is", None, 'exclude'),
'Fire Temple Flare Dancer Chest': ("the #Flare Dancer behind a totem# guards", None, 'exclude'),
@@ -530,11 +652,9 @@ hintTable = {
'Water Temple Torches Chest': ("#fire in the Water Temple# reveals", None, 'exclude'),
'Water Temple Dragon Chest': ("a #serpent's prize# in the Water Temple is", None, 'exclude'),
'Water Temple Central Bow Target Chest': ("#blinding an eye# in the Water Temple leads to", None, 'exclude'),
'Water Temple Central Pillar Chest': ("in the #depths of the Water Temple# lies", None, 'exclude'),
'Water Temple Cracked Wall Chest': ("#through a crack# in the Water Temple is", None, 'exclude'),
'Water Temple Longshot Chest': (["#facing yourself# reveals", "a #dark reflection# of yourself guards"], "#Dark Link# guards", 'exclude'),
'Water Temple MQ Central Pillar Chest': ("in the #depths of the Water Temple# lies", None, 'exclude'),
'Water Temple MQ Boss Key Chest': ("fire in the Water Temple unlocks a #vast gate# revealing a chest with", None, 'exclude'),
'Water Temple MQ Longshot Chest': ("#through a crack# in the Water Temple is", None, 'exclude'),
'Water Temple MQ Compass Chest': ("#fire in the Water Temple# reveals", None, 'exclude'),
@@ -591,8 +711,8 @@ hintTable = {
'Shadow Temple After Wind Enemy Chest': ("#mummies guarding a ferry# hide", None, 'exclude'),
'Shadow Temple After Wind Hidden Chest': ("#mummies guarding a ferry# hide", None, 'exclude'),
'Shadow Temple Spike Walls Left Chest': ("#walls consumed by a ball of fire# reveal", None, 'exclude'),
'Shadow Temple Invisible Floormaster Chest': ("shadows in an #invisible maze# guard", None, 'exclude'),
'Shadow Temple Boss Key Chest': ("#walls consumed by a ball of fire# reveal", None, 'exclude'),
'Shadow Temple Freestanding Key': ("#inside a burning skull# lies", None, 'exclude'),
'Shadow Temple MQ Compass Chest': ("the #Eye of Truth# pierces a hall of faces to reveal", None, 'exclude'),
'Shadow Temple MQ Hover Boots Chest': ("#Dead Hand in the Shadow Temple# holds", None, 'exclude'),
@@ -605,7 +725,6 @@ hintTable = {
'Shadow Temple MQ Invisible Spikes Chest': ("the #dead roam among invisible spikes# guarding", None, 'exclude'),
'Shadow Temple MQ Boss Key Chest': ("#walls consumed by a ball of fire# reveal", None, 'exclude'),
'Shadow Temple MQ Spike Walls Left Chest': ("#walls consumed by a ball of fire# reveal", None, 'exclude'),
'Shadow Temple MQ Stalfos Room Chest': ("near an #empty pedestal# within the Shadow Temple lies", None, 'exclude'),
'Shadow Temple MQ Invisible Blades Invisible Chest': ("#invisible blades# guard", None, 'exclude'),
'Shadow Temple MQ Invisible Blades Visible Chest': ("#invisible blades# guard", None, 'exclude'),
'Shadow Temple MQ Wind Hint Chest': ("an #invisible chest guarded by the dead# holds", None, 'exclude'),
@@ -627,18 +746,18 @@ hintTable = {
'Bottom of the Well Fire Keese Chest': ("#perilous pits# in the well guard the path to", None, 'exclude'),
'Bottom of the Well Like Like Chest': ("#locked in a cage# in the well lies", None, 'exclude'),
'Bottom of the Well Freestanding Key': ("#inside a coffin# hides", None, 'exclude'),
'Bottom of the Well Lens of Truth Chest': (["the well's #grasping ghoul# hides", "a #nether dweller in the well# holds"], "#Dead Hand in the well# holds", 'exclude'),
'Bottom of the Well MQ Compass Chest': (["the well's #grasping ghoul# hides", "a #nether dweller in the well# holds"], "#Dead Hand in the well# holds", 'exclude'),
'Bottom of the Well MQ Map Chest': ("a #royal melody in the well# uncovers", None, 'exclude'),
'Bottom of the Well MQ Lens of Truth Chest': ("an #army of the dead# in the well guards", None, 'exclude'),
'Bottom of the Well MQ Dead Hand Freestanding Key': ("#Dead Hand's explosive secret# is", None, 'exclude'),
'Bottom of the Well MQ East Inner Room Freestanding Key': ("an #invisible path in the well# leads to", None, 'exclude'),
'Ice Cavern Map Chest': ("#winds of ice# surround", None, 'exclude'),
'Ice Cavern Map Chest': ("#winds of ice# surround", "a chest #atop a pillar of ice# contains", 'exclude'),
'Ice Cavern Compass Chest': ("a #wall of ice# protects", None, 'exclude'),
'Ice Cavern Iron Boots Chest': ("a #monster in a frozen cavern# guards", None, 'exclude'),
'Ice Cavern Freestanding PoH': ("a #wall of ice# protects", None, 'exclude'),
'Ice Cavern MQ Iron Boots Chest': ("a #monster in a frozen cavern# guards", None, 'exclude'),
'Ice Cavern MQ Compass Chest': ("#winds of ice# surround", None, 'exclude'),
'Ice Cavern MQ Map Chest': ("a #wall of ice# protects", None, 'exclude'),
'Ice Cavern MQ Freestanding PoH': ("#winds of ice# surround", None, 'exclude'),
@@ -686,7 +805,6 @@ hintTable = {
'Ganons Castle Water Trial Left Chest': ("the #test of the seas# holds", None, 'exclude'),
'Ganons Castle Water Trial Right Chest': ("the #test of the seas# holds", None, 'exclude'),
'Ganons Castle Shadow Trial Front Chest': ("#music in the test of darkness# unveils", None, 'exclude'),
'Ganons Castle Shadow Trial Golden Gauntlets Chest': ("#light in the test of darkness# unveils", None, 'exclude'),
'Ganons Castle Spirit Trial Crystal Switch Chest': ("the #test of the sands# holds", None, 'exclude'),
'Ganons Castle Spirit Trial Invisible Chest': ("the #test of the sands# holds", None, 'exclude'),
'Ganons Castle Light Trial First Left Chest': ("the #test of radiance# holds", None, 'exclude'),
@@ -703,7 +821,6 @@ hintTable = {
'Ganons Castle MQ Forest Trial Frozen Eye Switch Chest': ("the #test of the wilds# holds", None, 'exclude'),
'Ganons Castle MQ Light Trial Lullaby Chest': ("#music in the test of radiance# reveals", None, 'exclude'),
'Ganons Castle MQ Shadow Trial Bomb Flower Chest': ("the #test of darkness# holds", None, 'exclude'),
'Ganons Castle MQ Shadow Trial Eye Switch Chest': ("the #test of darkness# holds", None, 'exclude'),
'Ganons Castle MQ Spirit Trial Golden Gauntlets Chest': ("#reflected light in the test of the sands# reveals", None, 'exclude'),
'Ganons Castle MQ Spirit Trial Sun Back Right Chest': ("#reflected light in the test of the sands# reveals", None, 'exclude'),
'Ganons Castle MQ Spirit Trial Sun Back Left Chest': ("#reflected light in the test of the sands# reveals", None, 'exclude'),
@@ -721,6 +838,16 @@ hintTable = {
'Spirit Temple Twinrova Heart': ("the #Sorceress Sisters# hold", "#Twinrova# holds", 'exclude'),
'Shadow Temple Bongo Bongo Heart': ("the #Phantom Shadow Beast# holds", "#Bongo Bongo# holds", 'exclude'),
'Queen Gohma': ("the #Parasitic Armored Arachnid# holds", "#Queen Gohma# holds", 'exclude'),
'King Dodongo': ("the #Infernal Dinosaur# holds", "#King Dodongo# holds", 'exclude'),
'Barinade': ("the #Bio-Electric Anemone# holds", "#Barinade# holds", 'exclude'),
'Phantom Ganon': ("the #Evil Spirit from Beyond# holds", "#Phantom Ganon# holds", 'exclude'),
'Volvagia': ("the #Subterranean Lava Dragon# holds", "#Volvagia# holds", 'exclude'),
'Morpha': ("the #Giant Aquatic Amoeba# holds", "#Morpha# holds", 'exclude'),
'Bongo Bongo': ("the #Sorceress Sisters# hold", "#Twinrova# holds", 'exclude'),
'Twinrova': ("the #Phantom Shadow Beast# holds", "#Bongo Bongo# holds", 'exclude'),
'Links Pocket': ("#@'s pocket# holds", "@ already has", 'exclude'),
'Deku Tree GS Basement Back Room': ("a #spider deep within the Deku Tree# hides", None, 'exclude'),
'Deku Tree GS Basement Gate': ("a #web protects a spider# within the Deku Tree holding", None, 'exclude'),
'Deku Tree GS Basement Vines': ("a #web protects a spider# within the Deku Tree holding", None, 'exclude'),
@@ -768,10 +895,10 @@ hintTable = {
'Fire Temple GS Scarecrow Top': ("a #spider-friendly scarecrow# atop a volcano hides", "a #spider-friendly scarecrow# atop the Fire Temple hides", 'exclude'),
'Fire Temple GS Scarecrow Climb': ("a #spider-friendly scarecrow# atop a volcano hides", "a #spider-friendly scarecrow# atop the Fire Temple hides", 'exclude'),
'Fire Temple MQ GS Above Fire Wall Maze': ("a #spider above a fiery maze# holds", None, 'exclude'),
'Fire Temple MQ GS Fire Wall Maze Center': ("a #spider within a fiery maze# holds", None, 'exclude'),
'Fire Temple MQ GS Above Flame Maze': ("a #spider above a fiery maze# holds", None, 'exclude'),
'Fire Temple MQ GS Flame Maze Center': ("a #spider within a fiery maze# holds", None, 'exclude'),
'Fire Temple MQ GS Big Lava Room Open Door': ("a #Goron trapped near lava# befriended a spider with", None, 'exclude'),
'Fire Temple MQ GS Fire Wall Maze Side Room': ("a #spider beside a fiery maze# holds", None, 'exclude'),
'Fire Temple MQ GS Flame Maze Side Room': ("a #spider beside a fiery maze# holds", None, 'exclude'),
'Water Temple GS Falling Platform Room': ("a #spider over a waterfall# in the Water Temple holds", None, 'exclude'),
'Water Temple GS Central Pillar': ("a #spider in the center of the Water Temple# holds", None, 'exclude'),
@@ -796,7 +923,7 @@ hintTable = {
'Shadow Temple GS Single Giant Pot': ("#beyond a burning skull# lies a spider with", None, 'exclude'),
'Shadow Temple GS Falling Spikes Room': ("a #spider beyond falling spikes# holds", None, 'exclude'),
'Shadow Temple GS Triple Giant Pot': ("#beyond three burning skulls# lies a spider with", None, 'exclude'),
'Shadow Temple GS Like Like Room': ("a spider guarded by #invisible blades# holds", None, 'exclude'),
'Shadow Temple GS Invisible Blades Room': ("a spider guarded by #invisible blades# holds", None, 'exclude'),
'Shadow Temple GS Near Ship': ("a spider near a #docked ship# hoards", None, 'exclude'),
'Shadow Temple MQ GS Falling Spikes Room': ("a #spider beyond falling spikes# holds", None, 'exclude'),
@@ -853,7 +980,7 @@ hintTable = {
'Kak GS House Under Construction': ("night in the past reveals a #spider in a town# holding", None, 'exclude'),
'Kak GS Skulltula House': ("night in the past reveals a #spider in a town# holding", None, 'exclude'),
'Kak GS Guards House': ("night in the past reveals a #spider in a town# holding", None, 'exclude'),
'Kak GS Near Gate Guard': ("night in the past reveals a #spider in a town# holding", None, 'exclude'),
'Kak GS Tree': ("night in the past reveals a #spider in a town# holding", None, 'exclude'),
'Kak GS Watchtower': ("night in the past reveals a #spider in a town# holding", None, 'exclude'),
'Kak GS Above Impas House': ("night in the future reveals a #spider in a town# holding", None, 'exclude'),
@@ -1030,7 +1157,7 @@ hintTable = {
'Desert Colossus -> Colossus Grotto': ("lifting a #rock in the desert# reveals", None, 'entrance'),
'GV Grotto Ledge -> GV Octorok Grotto': ("a rock on #a ledge in the valley# hides", None, 'entrance'),
'GC Grotto Platform -> GC Grotto': ("a #pool of lava# in Goron City blocks the way to", None, 'entrance'),
'Gerudo Fortress -> GF Storms Grotto': ("a #storm within Gerudo's Fortress# reveals", None, 'entrance'),
'GF Entrances Behind Crates -> GF Storms Grotto': ("a #storm within Gerudo's Fortress# reveals", None, 'entrance'),
'Zoras Domain -> ZD Storms Grotto': ("a #storm within Zora's Domain# reveals", None, 'entrance'),
'Hyrule Castle Grounds -> HC Storms Grotto': ("a #storm near the castle# reveals", None, 'entrance'),
'GV Fortress Side -> GV Storms Grotto': ("a #storm in the valley# reveals", None, 'entrance'),
@@ -1044,6 +1171,8 @@ hintTable = {
'Zoras Fountain -> Jabu Jabus Belly Beginning': ("inside #Jabu Jabu#, one can find", None, 'entrance'),
'Kakariko Village -> Bottom of the Well': ("a #village well# leads to", None, 'entrance'),
'Ganons Castle Grounds -> Ganons Castle Lobby': ("the #rainbow bridge# leads to", None, 'entrance'),
'KF Links House': ("Link's House", None, 'region'),
'Temple of Time': ("the #Temple of Time#", None, 'region'),
'KF Midos House': ("Mido's house", None, 'region'),
@@ -1087,7 +1216,7 @@ hintTable = {
'ZF Great Fairy Fountain': ("a #Great Fairy Fountain#", None, 'region'),
'Graveyard Shield Grave': ("a #grave with a free chest#", None, 'region'),
'Graveyard Heart Piece Grave': ("a chest spawned by #Sun's Song#", None, 'region'),
'Royal Familys Tomb': ("the #Royal Family's Tomb#", None, 'region'),
'Graveyard Royal Familys Tomb': ("the #Royal Family's Tomb#", None, 'region'),
'Graveyard Dampes Grave': ("Dampé's Grave", None, 'region'),
'DMT Cow Grotto': ("a solitary #Cow#", None, 'region'),
'HC Storms Grotto': ("a sandy grotto with #fragile walls#", None, 'region'),
@@ -1123,114 +1252,272 @@ hintTable = {
'ZD Storms Grotto': ("a small #Fairy Fountain#", None, 'region'),
'GF Storms Grotto': ("a small #Fairy Fountain#", None, 'region'),
# '1001': ("Ganondorf 2022!", None, 'junk'),
'1002': ("They say that monarchy is a terrible system of governance.", None, 'junk'),
'1003': ("They say that Zelda is a poor leader.", None, 'junk'),
# Junk hints must satisfy all of the following conditions:
# - They aren't inappropriate.
# - They aren't absurdly long copy pastas.
# - They aren't quotes or references that are simply not funny when out-of-context.
# To elaborate on this last point: junk hints need to be able to be understood
# by everyone, and not just those who get the obscure references.
# Zelda references are considered fair game.
# First generation junk hints
'1002': ("${12 68 79}They say that monarchy is a terrible system of governance.", None, 'junk'), # sfx: Zelda gasp
'1003': ("${12 68 79}They say that Zelda is a poor leader.", None, 'junk'), # sfx: Zelda gasp
'1004': ("These hints can be quite useful. This is an exception.", None, 'junk'),
'1006': ("They say that all the Zora drowned in Wind Waker.", None, 'junk'),
'1008': ("'Member when Ganon was a blue pig?^I 'member.", None, 'junk'),
'1008': ("Remember when Ganon was a blue pig?^I remember.", None, 'junk'), # ref: A Link to the Past
'1009': ("One who does not have Triforce can't go in.", None, 'junk'),
'1010': ("Save your future, end the Happy Mask Salesman.", None, 'junk'),
'1012': ("I'm stoned. Get it?", None, 'junk'),
'1013': ("Hoot! Hoot! Would you like me to repeat that?", None, 'junk'),
'1014': ("Gorons are stupid. They eat rocks.", None, 'junk'),
'1013': ("Hoot! Hoot! Would you like me to repeat that?", None, 'junk'), # ref: Kaepora Gaebora (the owl)
'1014': ("Gorons are stupid. They eat rocks. Except, apparently, the big rock blocking Dodongo's Cavern.", None, 'junk'),
'1015': ("They say that Lon Lon Ranch prospered under Ingo.", None, 'junk'),
'1016': ("The single rupee is a unique item.", None, 'junk'),
'1017': ("Without the Lens of Truth, the Treasure Chest Mini-Game is a 1 out of 32 chance.^Good luck!", None, 'junk'),
'1018': ("Use bombs wisely.", None, 'junk'),
'1021': ("I found you, faker!", None, 'junk'),
'1022': ("You're comparing yourself to me?^Ha! You're not even good enough to be my fake.", None, 'junk'),
'1023': ("I'll make you eat those words.", None, 'junk'),
'1022': ("You're comparing yourself to me?^Ha! You're not even good enough to be my fake.", None, 'junk'), # ref: SA2
'1024': ("What happened to Sheik?", None, 'junk'),
# '1025': ("L2P @.", None, 'junk'),
'1026': ("I've heard Sploosh Kaboom is a tricky game.", None, 'junk'),
'1027': ("I'm Lonk from Pennsylvania.", None, 'junk'),
'1026': ("I've heard Sploosh Kaboom is a tricky game.", None, 'junk'), # ref: Wind Waker
'1028': ("I bet you'd like to have more bombs.", None, 'junk'),
'1029': ("When all else fails, use Fire.", None, 'junk'),
# '1030': ("Here's a hint, @. Don't be bad.", None, 'junk'),
'1031': ("Game Over. Return of Ganon.", None, 'junk'),
'1031': ("Game Over. Return of Ganon.", None, 'junk'), # ref: Zelda II
'1032': ("May the way of the Hero lead to the Triforce.", None, 'junk'),
'1033': ("Can't find an item? Scan an Amiibo.", None, 'junk'),
'1034': ("They say this game has just a few glitches.", None, 'junk'),
'1035': ("BRRING BRRING This is Ulrira. Wrong number?", None, 'junk'),
'1036': ("Tingle Tingle Kooloo Limpah", None, 'junk'),
'1037': ("L is real 2041", None, 'junk'),
'1035': ("BRRING BRRING This is Ulrira. Wrong number?", None, 'junk'), # ref: Link's Awakening
'1036': ("Tingle Tingle Kooloo Limpah", None, 'junk'), # ref: Majora's Mask
'1038': ("They say that Ganondorf will appear in the next Mario Tennis.", None, 'junk'),
'1039': ("Medigoron sells the earliest Breath of the Wild demo.", None, 'junk'),
'1040': ("There's a reason why I am special inquisitor!", None, 'junk'),
'1041': ("You were almost a @ sandwich.", None, 'junk'),
'1042': ("I'm a helpful hint Gossip Stone!^See, I'm helping.", None, 'junk'),
'1043': ("Dear @, please come to the castle. I've baked a cake for you.&Yours truly, princess Zelda.", None, 'junk'),
'1044': ("They say all toasters toast toast.", None, 'junk'),
'1045': ("They say that Okami is the best Zelda game.", None, 'junk'),
'1043': ("Dear @, please come to the castle. I've baked a cake for you.&Yours truly, princess Zelda.", None, 'junk'), # ref: Super Mario 64
'1044': ("They say all toasters toast toast.", None, 'junk'), # ref: Hotel Mario
'1045': ("They say that Okami is the best Zelda game.", None, 'junk'), # ref: people often say that Okami feels and plays like a Zelda game
'1046': ("They say that quest guidance can be found at a talking rock.", None, 'junk'),
# '1047': ("They say that the final item you're looking for can be found somewhere in Hyrule.", None, 'junk'),
'1048': ("Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.", None, 'junk'),
'1048': ("${12 68 7a}Mweep${07 04 51}", None, 'junk'), # Mweep
'1049': ("They say that Barinade fears Deku Nuts.", None, 'junk'),
'1050': ("They say that Flare Dancers do not fear Goron-crafted blades.", None, 'junk'),
'1050': ("They say that Flare Dancers do not fear Goron-crafted blades.", None, 'junk'),
'1051': ("They say that Morpha is easily trapped in a corner.", None, 'junk'),
'1052': ("They say that Bongo Bongo really hates the cold.", None, 'junk'),
'1053': ("They say that crouch stabs mimic the effects of your last attack.", None, 'junk'),
'1054': ("They say that bombing the hole Volvagia last flew into can be rewarding.", None, 'junk'),
'1055': ("They say that invisible ghosts can be exposed with Deku Nuts.", None, 'junk'),
'1056': ("They say that the real Phantom Ganon is bright and loud.", None, 'junk'),
'1057': ("They say that walking backwards is very fast.", None, 'junk'),
'1057': ("They say that the fastest way forward is walking backwards.", None, 'junk'),
'1058': ("They say that leaping above the Market entrance enriches most children.", None, 'junk'),
'1059': ("They say that looking into darkness may find darkness looking back into you.", None, 'junk'),
'1059': ("They say that looking into darkness may find darkness looking back into you.", None, 'junk'), # ref: Nietzsche
'1060': ("You found a spiritual Stone! By which I mean, I worship Nayru.", None, 'junk'),
'1061': ("They say that the stick is mightier than the sword.", None, 'junk'),
'1062': ("Open your eyes.^Open your eyes.^Wake up, @.", None, 'junk'),
'1061': ("A broken stick is just as good as a Master Sword. Who knew?", None, 'junk'),
'1062': ("Open your eyes.^Open your eyes.^Wake up, @.", None, 'junk'), # ref: Breath of the Wild
'1063': ("They say that arbitrary code execution leads to the credits sequence.", None, 'junk'),
'1064': ("They say that Twinrova always casts the same spell the first three times.", None, 'junk'),
# '1065': ("They say that the Development branch may be unstable.", None, 'junk'),
'1066': ("You're playing a Randomizer. I'm randomized!^Here's a random number: #4#.&Enjoy your Randomizer!", None, 'junk'),
'1066': ("You're playing a Randomizer. I'm randomized!^${12 48 31}Here's a random number: #4#.&Enjoy your Randomizer!", None, 'junk'), # ref: xkcd comic / sfx: get small item from chest
'1067': ("They say Ganondorf's bolts can be reflected with glass or steel.", None, 'junk'),
'1068': ("They say Ganon's tail is vulnerable to nuts, arrows, swords, explosives, hammers...^...sticks, seeds, boomerangs...^...rods, shovels, iron balls, angry bees...", None, 'junk'),
'1068': ("They say Ganon's tail is vulnerable to nuts, arrows, swords, explosives, hammers...^...sticks, seeds, boomerangs...^...rods, shovels, iron balls, angry bees...", None, 'junk'), # ref: various Zelda games
'1069': ("They say that you're wasting time reading this hint, but I disagree. Talk to me again!", None, 'junk'),
'1070': ("They say Ganondorf knows where to find the instrument of his doom.", None, 'junk'),
'1071': ("I heard @ is pretty good at Zelda.", None, 'junk'),
'Deku Tree': ("an ancient tree", "Deku Tree", 'dungeonName'),
# Second generation junk hints
'1072': ("Fingers-Mazda, the first thief in the world, stole fire from the gods.^But he was unable to fence it.&It was too hot.&He got really burned on that deal.", None, 'junk'), # ref: Discworld
'1073': ("Boing-oing!^There are times in life when one should seek the help of others...^Thus, when standing alone fails to help, stand together.", None, 'junk'), # ref: Gossip Stone in Phantom Hourglass
'1074': ("They say that if you don't use your slingshot at all when you play the slingshot minigame, the owner gets upset with you.", None, 'junk'),
'1075': ("Hey! Wait! Don't go out! It's unsafe!^Wild Pokémon live in tall grass!^You need your own Pokémon for your protection.", None, 'junk'), # ref: Pokémon
'1076': ("They say it's 106 miles to Hyrule Castle, we have half a bar of magic, it's dark, and we're wearing sunglasses.", None, 'junk'), # ref: Blues Brothers
'1078': ("It would be a shame if something... unfortunate... were to happen to you.^Have you considered saving lately?", None, 'junk'), # ref: meme
'1079': ("They say that something wonderful happens when playing the Song of Storms after planting a magic bean.", None, 'junk'),
'1080': ("Long time watcher, first time player. Greetings from Termina. Incentive goes to Randobot's choice.", None, 'junk'), # ref: GDQ meme
'1081': ("No matter what happens...Do not give up, do not complain, and do NOT stay up all night playing!", None, 'junk'), # ref: Wind Waker
'1082': ("That's a nice wall you got there. Would be a shame if I just... clipped right through that.", None, 'junk'),
'1083': ("Ganondorf used to be an adventurer like me, but then he took a light arrow to the knee.", None, 'junk'), # ref: Skyrim
'1084': ("They say that the easiest way to kill Peahats is using Din's Fire while they're grounded.", None, 'junk'),
'1085': ("They say that the castle guards' routes have major security vulnerabilities.", None, 'junk'),
'1086': ("They say that Epona is an exceptional horse. Able to clear canyons in a single bound.", None, 'junk'),
'1087': ("They say only one heart piece in all of Hyrule will declare the holder a winner.", None, 'junk'),
# '1088': ("Are you stuck? Try asking for help in our Discord server or check out our Wiki!", None, 'junk'),
'1089': ("You would be surprised at all the things you can Hookshot in the Spirit Temple!", None, 'junk'),
'1090': ("I once glued a set of false teeth to the Boomerang.^${12 39 c7}That came back to bite me.", None, 'junk'), # sfx: Ganondorf laugh
'1091': ("They say that most of the water in Hyrule flows through King Zora's buttocks.", None, 'junk'),
'1092': ("Space, space, wanna go to space, yes, please space. Space space. Go to space.", None, 'junk'), # ref: Portal 2
'1093': ("They say that you must read the names of \"Special Deal\" items in shops carefully.", None, 'junk'),
'1094': ("Did you know that the Boomerang instantly stuns Phantom Ganon's second form?", None, 'junk'),
'1095': ("I came here to chew bubblegum and play rando. And I'm all out of bubblegum.", None, 'junk'), # ref: They Live
'1096': ("Did you know that Stalchildren leave you alone when wearing the Bunny Hood?", None, 'junk'),
'1097': ("This Gossip Stone Is Dedicated to Those Who Perished Before Ganon Was Defeated.", None, 'junk'),
'1098': ("Did you know that Blue Fire destroys mud walls and detonates Bomb Flowers?", None, 'junk'),
'1099': ("Are you sure you want to play this? Wanna go get some tacos or something?", None, 'junk'),
'1100': ("What did Zelda suggest that Link do when diplomacy didn't work?^${12 39 C7}Triforce.", None, 'junk'), # sfx: Ganondorf laugh
'1101': ("They say that bombing the hole Volvagia last flew into can be rewarding.", None, 'junk'),
'1102': ("Hi @, we've been trying to reach you about your horse's extended warranty.", None, 'junk'),
'1103': ("Ganondorf brushes his rotten teeth with salted slug flavoured tooth paste!", None, 'junk'), # ref: Banjo Kazooie
'1104': ("I'm Commander Shepard, and this is my favorite Gossip Stone in Hyrule!", None, 'junk'), # ref: Mass Effect
'1105': ("They say that tossing a bomb will cause a Blue Bubble to go after it.", None, 'junk'),
'1106': ("They say that the Lizalfos in Dodongo's Cavern like to play in lava.", None, 'junk'),
'1107': ("Why won't anyone acknowledge the housing crisis in Kakariko Village?", None, 'junk'),
'1108': ("Don't believe in yourself. Believe in the me that believes in you!", None, 'junk'), # ref: Anime
'1109': ("This is a haiku&Five syllables then seven&Five more to finish", None, 'junk'),
'1110': ("They say that beating Bongo Bongo quickly requires an even tempo.", None, 'junk'),
'1111': ("Did you know that you can tune a piano but you can't tune a fish?", None, 'junk'), # Studio Album by REO Speedwagon
'1112': ("You thought it would be a useful hint, but it was me, Junk Hint!", None, 'junk'), # ref: Jojo's Bizarre Adventure
'1113': ("They say you can cut corners to get to your destination faster.", None, 'junk'),
'1114': ("Three things are certain: death, taxes, and forgetting a check.", None, 'junk'), # ref: Benjamin Franklin, allegedly
'1115': ("Have you thought about going where the items are?^Just saying.", None, 'junk'),
'1116': ("They say that the true reward is the friends we made along the way.", None, 'junk'), # ref: common meme with unknown origins
'1117': ("Gossip Stone Shuffle must be on. I'm normally in Zora's Domain!", None, 'junk'),
'1118': ("When ASM is used to code a randomizer they should call it ASMR.", None, 'junk'),
'1119': ("It's so lonely being stuck here with nobody else to talk to...", None, 'junk'),
'1120': ("Why are they called Wallmasters if they come from the ceiling?", None, 'junk'),
'1121': ("They say that Zelda's Lullaby can be used to repair broken signs.", None, 'junk'),
'1122': ("Fell for it, didn't you, fool? Junk hint cross split attack!", None, 'junk'), # ref: Jojo's Bizarre Adventure
'1123': ("Please don't abandon this seed. Our world deserves saving!", None, 'junk'),
'1124': ("I wanna be a rocketship, @! Please help me live my dreams!", None, 'junk'),
'1125': ("They say that King Zora needs to build a taller fence.", None, 'junk'),
'1126': ("They say Goron fabrics protect against more than fire.", None, 'junk'),
'1127': ("Did you know that ReDead mourn their defeated friends?", None, 'junk'),
'1128': ("Did you know that ReDead eat their defeated friends?", None, 'junk'),
'1129': ("What is a Hylian? A miserable little pile of secrets!", None, 'junk'), # ref: Castlevania
'1130': ("The hint stone you have dialed&has been disconnected.", None, 'junk'), # ref: telephone error message
'1131': ("We don't make mistakes, we have happy accidents.", None, 'junk'), # ref: Bob Ross
'1132': ("I've heard Ganon dislikes lemon-flavored popsicles.", None, 'junk'),
'1133': ("If Gorons eat rocks, does that mean I'm in danger?", None, 'junk'),
'1134': ("They say Ingo is not very good at planning ahead.", None, 'junk'),
'1136': ("They say that Anju needs to stop losing her chickens.", None, 'junk'),
'1137': ("Can you move me? I don't get great service here.", None, 'junk'),
'1138': ("Have you embraced the power of the Deku Nut yet?", None, 'junk'),
'1139': ("They say that Mido is easily confused by sick flips.", None, 'junk'), # ref: Mido Skip
'1140': ("They say that the path to Termina is a one-way trip.", None, 'junk'), # ref: Majora's Mask
'1141': ("They say that @ deserves a hug. Everyone does!", None, 'junk'),
'1142': ("I hear Termina is a great spot for a vacation!", None, 'junk'), # ref: Majora's Mask
'1144': ("You've met with a terrible fate, haven't you?", None, 'junk'), # ref: Majora's Mask
'1145': ("Try using various items and weapons on me :)", None, 'junk'),
'1146': ("On second thought, let's not go to Hyrule Castle. 'Tis a silly place.", None, 'junk'), # ref: Monty Python
'1147': ("If you see something suspicious, bomb it!", None, 'junk'),
'1148': ("Don't forget to write down your hints :)", None, 'junk'),
'1149': ("Would you kindly...&close this textbox?", None, 'junk'), # ref: Bioshock
'1150': ("They say that King Dodongo dislikes smoke.", None, 'junk'), # ref: Zelda 1
'1151': ("Never give up. Trust your instincts!", None, 'junk'), # ref: Star Fox 64
'1152': ("I love to gossip! Wanna be friends?", None, 'junk'),
'1153': ("This isn't where I parked my horse!", None, 'junk'), # ref: EuroTrip
'1156': ("Anything not saved will be lost.", None, 'junk'), # ref: Nintendo (various games and platforms)
'1157': ("I was voted least helpful hint stone five years in a row!", None, 'junk'),
'1158': ("They say that the Groose is loose.", None, 'junk'), # ref: Skyward Sword
'1159': ("Twenty-three is number one!^And thirty-one is number two!", None, 'junk'), # ref: Deku Scrubs in Deku Tree
'1160': ("Ya ha ha! You found me!", None, 'junk'), # ref: Breath of the Wild
'1161': ("Do you like Like Likes?", None, 'junk'),
'1162': ("Next you'll say:^\"Why am I still reading these?\"", None, 'junk'), # ref: Jojo's Bizarre Adventure
'1165': ("You're a cool cat, @.", None, 'junk'),
'1167': ("This hint is in another castle.", None, 'junk'), # ref: Mario
'1169': ("Hydrate!", None, 'junk'),
'1170': ("They say that there is an alcove with a Recovery Heart behind the lava wall in Dodongo's Cavern.", None, 'junk'),
'1171': ("Having regrets? Reset without saving!", None, 'junk'),
'1172': ("Did you know that Gorons understood SRM long before speedrunners did?", None, 'junk'), # ref: Goron City murals
# '1173': ("Did you know that the Discord server has a public Plandomizer library?", None, 'junk'),
'1174': ("${12 28 DF}Moo!", None, 'junk'), # sfx: cow
'1175': ("${12 28 D8}Woof!", None, 'junk'), # sfx: dog
'1176': ("${12 68 08}Aah! You startled me!", None, 'junk'), # sfx: adult Link scream (when falling)
'1178': ("Use Multiworld to cross the gaps between worlds and engage in jolly co-operation!", None, 'junk'), # ref: Dark Souls
'1179': ("${12 68 51}What in tarnation!", None, 'junk'), # sfx: Talon surprised at being woken
'1180': ("Press \u00A5\u00A5\u00A6\u00A6\u00A7\u00A8\u00A7\u00A8\u00A0\u009F to warp to&the credits.", None, 'junk'), # ref: Konami Code
'1181': ("Oh!^Oh-oh!^C'mon!^Come on! Come on! Come on!^HOT!!^What a hot beat!^WHOOOOAH!^YEEEEAH!^YAHOOO!!", None, 'junk'), # ref: Darunia dancing
'1182': ("${12 68 5F}Hey! Listen!", None, 'junk'), # sfx: Navi: "Hey!"
'1183': ("I am the King of Gossip Stones, but fear not - I have the common touch! That means I can make conversation with everyone^from foreign dignitaries to the lowliest bumpkin - such as yourself!", None, 'junk'), # ref: Dragon Quest XI
'1184': ("I am @, hero of the Gossip Stones! Hear my name and tremble!", None, 'junk'), # ref: Link the Goron
'1185': ("Having trouble defeating Dark Link?^Look away from him while holding Z-Target and then when Dark Link walks up behind you, strafe sideways and slash your sword.", None, 'junk'),
'1186': ("They say that if Link could say a few words, he'd be a better public speaker.", None, 'junk'),
'1187': ("Did you know that you only need to play the Song of Time to open the Door of Time? The Spiritual Stones are not needed.", None, 'junk'),
'1188': ("Where did Anju meet her lover?^${12 39 C7}At a Kafei.", None, 'junk'), # ref: Majora's Mask / sfx: Ganondorf laugh
'1189': ("Did you know that you can access the Fire Temple boss door without dropping the pillar by using the Hover boots?", None, 'junk'),
'1190': ("Key-locked in Fire Temple? Maybe Volvagia has your Small Key.", None, 'junk'),
# '1191': ("Expired Spoiler Log? Don't worry! The OoTR Discord staff can help you out.", None, 'junk'),
'1192': ("Try holding a D-pad button on the item screen.", None, 'junk'),
'1193': ("Did you know that in the Forest Temple you can reach the alcove in the block push room with Hover Boots?", None, 'junk'),
'1194': ("Dodongo's Cavern is much easier and faster to clear as Adult.", None, 'junk'),
'1195': ("Did you know that the solution to the Truth Spinner in Shadow Temple is never one of the two positions closest to the initial position?", None, 'junk'),
'1196': ("Did you know that the Kokiri Sword is as effective as Deku Sticks against Dead Hand?", None, 'junk'),
'1197': ("Did you know that Ruto is strong enough to defeat enemies and activate ceiling switches inside Jabu Jabu's Belly?", None, 'junk'),
'1198': ("Did you know that Barinade, Volvagia and Twinrova hard require the Boomerang, Megaton Hammer and Mirror Shield, respectively?", None, 'junk'),
'1199': ("Did you know that Dark Link's max health is equal to @'s max health?", None, 'junk'),
'1200': ("Did you know that you can reach the invisible Hookshot target before the fans room in Shadow Temple with just the Hookshot if you backflip onto the chest?", None, 'junk'),
'1201': ("${12 68 54}Objection!", None, 'junk'), # ref: Ace Attorney / sfx: Ingo's BWAAAAAH
'1202': ("They say that in the castle courtyard you can see a portrait of a young Talon.", None, 'junk'), # ref: Talon = Mario joke
'1203': ("They say that Phantom Ganon is a big Louisa May Alcott fan.", None, 'junk'), # ref: The Poe Sisters are named after characters from one of her novels
'1204': ("Have you found all 41 Gossip Stones?^Only 40 of us give hints.", None, 'junk'), # The 41th stone is the Lake Hylia water level stone
'1205': ("It's time for you to look inward and begin asking yourself the big questions:^How did Medigoron get inside that hole, and how does he get out for the credits?", None, 'junk'), # ref: Avatar The Last Airbender
'1206': ("They say that Jabu Jabu is no longer a pescetarian in Master Quest.", None, 'junk'),
'1207': ("Why are the floating skulls called \"Bubbles\" and the floating bubbles \"Shaboms\"?", None, 'junk'),
'1208': ("Why aren't ReDead called ReAlive?", None, 'junk'),
'1209': ("${12 48 27}Songs are hard, aren't they?", None, 'junk'), # sfx: failing a song
'1210': ("Did you know that you can Boomerang items that are freestanding Heart Pieces in the unrandomized game?", None, 'junk'),
'1211': ("Did you know that ReDead won't attack if you walk very slowly?", None, 'junk'),
'1212': ("Did you know that ReDead and Gibdo have their own version of Sun's Song that freezes you?", None, 'junk'),
'1213': ("${12 28 B1}\u009F \u00A7\u00A8\u00A6 \u00A7\u00A8\u00A6 \u009F\u00A6 \u009F\u00A6 \u00A8\u00A7\u009F", None, 'junk'), # ref: Frogs 2 / sfx: Frogs
'1214': ("${12 28 A2}Help! I'm melting away!", None, 'junk'), # sfx: red ice melting
'1215': ("${12 38 80}Eek!^I'm a little shy...", None, 'junk'), # sfx: Scrub hurt/stunned by Link
'1216': ("Master, there is a 0 percent chance that this hint is useful in any way.", None, 'junk'), # ref: Skyward Sword
'1217': ("${12 48 0B}Here, have a heart <3", None, 'junk'), # sfx: get Recovery Heart
'1218': ("${12 48 03}Here, have a Rupee.", None, 'junk'), # sfx: get Rupee
'1219': ("${12 68 31}Don't forget to stand up and stretch regularly.", None, 'junk'), # sfx: child Link stretching and yawning
'1220': ("Remember that time you did that really embarrassing thing?^${12 68 3A}Yikes.", None, 'junk'), # sfx: child Link fall damage
'1221': ("@ tries to read the Gossip Stone...^${12 48 06}but he's standing on the wrong side of it!", None, 'junk'), # ref: Dragon Quest XI / sfx: error (e.g. trying to equip an item as the wrong age)
'1222': ("Plandomizer is a pathway to many abilities some consider to be... unnatural.", None, 'junk'), # ref: Star Wars
'1223': ("Did you know that you can have complete control over the item placement, item pool, and more, using Plandomizer?", None, 'junk'),
'1224': ("They say that the earth is round.^Just like pizza.", None, 'junk'),
'1225': ("${12 68 62}Keeeyaaaah!^What is this?! A Hylian?!", None, 'junk'), # ref: Ruto meeting Big Octo / sfx: Ruto screaming
'1226': ("For you, the day you read this hint was the most important day of your life.^But for me, it was Tuesday.", None, 'junk'), # ref: Street Fighter (the movie)
'1227': ("Did you know that Barinade is allergic to bananas?", None, 'junk'),
'1228': ("Have you seen my dodongo? Very large, eats everything, responds to \"King\".^Call Darunia in Goron City if found. Huge rupee reward!", None, 'junk'),
'1229': ("Having trouble breathing underwater?^Have you tried wearing more BLUE?", None, 'junk'),
# '1230': ("Hi! I'm currently on an exchange program from Termina.^They say that East Clock Town is on the way of the hero.", None, 'junk'), # ref: Majora's Mask
'1231': ("Why are you asking me? I don't have any answers! I'm just as confused as you are!", None, 'junk'),
'1232': ("What do you call a group of Gorons?^${12 39 C7}A rock band.", None, 'junk'), # sfx: Ganondorf laugh
'1233': ("When the moon hits Termina like a big pizza pie that's game over.", None, 'junk'), # ref: That's Amore by Dean Martin + Majora's Mask
'1234': ("Ganondorf doesn't specialize in hiding items, nor in keeping secrets for that matter.", None, 'junk'),
'1235': ("While you're wasting time reading this hint, the others are playing the seed.", None, 'junk'),
'1236': ("Have you ever tried hammering the ground or wall in a room with Torch Slugs, Flare Dancers, Tektites, Walltulas, Scrubs or Deku Babas?", None, 'junk'),
'1237': ("Did you know that there's a 1/201 chance per Rupee that the Zora from the diving minigame tosses a 500 Rupee?^Keep winning and the odds go up!", None, 'junk'),
'1238': ("J = 0;&while J < 10;& Press \u009F;& J++;^ Press \u009F;& J++;^ Press \u009F;& J++;^ Press \u009F;& J++;^ Press \u009F;& J++;^ Press \u009F;& J++;^ Press \u009F;& J++;^ Press \u009F;& J++;^ Press \u009F;& J++;^ Press \u009F;^break;", None, 'junk'), # \u009F = A button
'Deku Tree': ("an ancient tree", "the Deku Tree", 'dungeonName'),
'Dodongos Cavern': ("an immense cavern", "Dodongo's Cavern", 'dungeonName'),
'Jabu Jabus Belly': ("the belly of a deity", "Jabu Jabu's Belly", 'dungeonName'),
'Forest Temple': ("a deep forest", "Forest Temple", 'dungeonName'),
'Fire Temple': ("a high mountain", "Fire Temple", 'dungeonName'),
'Water Temple': ("a vast lake", "Water Temple", 'dungeonName'),
'Shadow Temple': ("the house of the dead", "Shadow Temple", 'dungeonName'),
'Spirit Temple': ("the goddess of the sand", "Spirit Temple", 'dungeonName'),
'Ice Cavern': ("a frozen maze", "Ice Cavern", 'dungeonName'),
'Bottom of the Well': ("a shadow\'s prison", "Bottom of the Well", 'dungeonName'),
'Gerudo Training Ground': ("the test of thieves", "Gerudo Training Ground", 'dungeonName'),
'Ganons Castle': ("a conquered citadel", "Inside Ganon's Castle", 'dungeonName'),
'Queen Gohma': ("One inside an #ancient tree#...", "One in the #Deku Tree#...", 'boss'),
'King Dodongo': ("One within an #immense cavern#...", "One in #Dodongo's Cavern#...", 'boss'),
'Barinade': ("One in the #belly of a deity#...", "One in #Jabu Jabu's Belly#...", 'boss'),
'Phantom Ganon': ("One in a #deep forest#...", "One in the #Forest Temple#...", 'boss'),
'Volvagia': ("One on a #high mountain#...", "One in the #Fire Temple#...", 'boss'),
'Morpha': ("One under a #vast lake#...", "One in the #Water Temple#...", 'boss'),
'Bongo Bongo': ("One within the #house of the dead#...", "One in the #Shadow Temple#...", 'boss'),
'Twinrova': ("One inside a #goddess of the sand#...", "One in the #Spirit Temple#...", 'boss'),
'Links Pocket': ("One in #@'s pocket#...", "One #@ already has#...", 'boss'),
'Forest Temple': ("a deep forest", "the Forest Temple", 'dungeonName'),
'Fire Temple': ("a high mountain", "the Fire Temple", 'dungeonName'),
'Water Temple': ("a vast lake", "the Water Temple", 'dungeonName'),
'Shadow Temple': ("the house of the dead", "the Shadow Temple", 'dungeonName'),
'Spirit Temple': ("the goddess of the sand", "the Spirit Temple", 'dungeonName'),
'Ice Cavern': ("a frozen maze", "the Ice Cavern", 'dungeonName'),
'Bottom of the Well': ("a shadow's prison", "the Bottom of the Well", 'dungeonName'),
'Gerudo Training Ground': ("the test of thieves", "the Gerudo Training Ground", 'dungeonName'),
'Ganons Castle': ("a conquered citadel", "inside Ganon's Castle", 'dungeonName'),
'bridge_vanilla': ("the #Shadow and Spirit Medallions# as well as the #Light Arrows#", None, 'bridge'),
'bridge_stones': ("Spiritual Stones", None, 'bridge'),
'bridge_medallions': ("Medallions", None, 'bridge'),
'bridge_dungeons': ("Spiritual Stones and Medallions", None, 'bridge'),
'bridge_tokens': ("Gold Skulltula Tokens", None, 'bridge'),
'bridge_hearts': ("hearts", None, 'bridge'),
'ganonBK_dungeon': ("hidden somewhere #inside its castle#", None, 'ganonBossKey'),
'ganonBK_regional': ("hidden somewhere #inside or nearby its castle#", None, 'ganonBossKey'),
'ganonBK_vanilla': ("kept in a big chest #inside its tower#", None, 'ganonBossKey'),
'ganonBK_overworld': ("hidden #outside of dungeons# in Hyrule", None, 'ganonBossKey'),
'ganonBK_any_dungeon': ("hidden #inside a dungeon# in Hyrule", None, 'ganonBossKey'),
'ganonBK_keysanity': ("hidden somewhere #in Hyrule#", None, 'ganonBossKey'),
'ganonBK_keysanity': ("hidden #anywhere in Hyrule#", None, 'ganonBossKey'),
'ganonBK_triforce': ("given to the Hero once the #Triforce# is completed", None, 'ganonBossKey'),
'ganonBK_medallions': ("Medallions", None, 'ganonBossKey'),
'ganonBK_stones': ("Spiritual Stones", None, 'ganonBossKey'),
'ganonBK_dungeons': ("Spiritual Stones and Medallions", None, 'ganonBossKey'),
'ganonBK_tokens': ("Gold Skulltula Tokens", None, 'ganonBossKey'),
'ganonBK_hearts': ("hearts", None, 'ganonBossKey'),
'lacs_vanilla': ("the #Shadow and Spirit Medallions#", None, 'lacs'),
'lacs_medallions': ("Medallions", None, 'lacs'),
'lacs_stones': ("Spiritual Stones", None, 'lacs'),
'lacs_dungeons': ("Spiritual Stones and Medallions", None, 'lacs'),
'lacs_tokens': ("Gold Skulltula Tokens", None, 'lacs'),
'lacs_hearts': ("hearts", None, 'lacs'),
'Spiritual Stone Text Start': ("3 Spiritual Stones found in Hyrule...", None, 'altar'),
'Child Altar Text End': ("\x13\x07Ye who may become a Hero...&Stand with the Ocarina and&play the Song of Time.", None, 'altar'),
@@ -1238,7 +1525,6 @@ hintTable = {
'Adult Altar Text End': ("Together with the Hero of Time,&the awakened ones will bind the&evil and return the light of peace&to the world...", None, 'altar'),
'Validation Line': ("Hmph... Since you made it this far,&I'll let you know what glorious&prize of Ganon's you likely&missed out on in my tower.^Behold...^", None, 'validation line'),
'Light Arrow Location': ("Ha ha ha... You'll never beat me by&reflecting my lightning bolts&and unleashing the arrows from&", None, 'Light Arrow Location'),
'2001': ("Oh! It's @.&I was expecting someone called&Sheik. Do you know what&happened to them?", None, 'ganonLine'),
'2002': ("I knew I shouldn't have put the key&on the other side of my door.", None, 'ganonLine'),
'2003': ("Looks like it's time for a&round of tennis.", None, 'ganonLine'),
@@ -1252,6 +1538,140 @@ hintTable = {
'2011': ("Today, let's begin down&'The Hero is Defeated' timeline.", None, 'ganonLine'),
}
# Table containing the groups of locations for the multi hints (dual, etc.)
# The is used in order to add the locations to the checked list
multiTable = {
'Deku Theater Rewards': ['Deku Theater Skull Mask', 'Deku Theater Mask of Truth'],
'HF Ocarina of Time Retrieval': ['HF Ocarina of Time Item', 'Song from Ocarina of Time'],
'HF Valley Grotto': ['HF Cow Grotto Cow', 'HF GS Cow Grotto'],
'Market Bombchu Bowling Rewards': ['Market Bombchu Bowling First Prize', 'Market Bombchu Bowling Second Prize'],
'ZR Frogs Rewards': ['ZR Frogs in the Rain', 'ZR Frogs Ocarina Game'],
'LH Lake Lab Pool': ['LH Lab Dive', 'LH GS Lab Crate'],
'LH Adult Bean Destination Checks': ['LH Freestanding PoH', 'LH Adult Fishing'],
'GV Pieces of Heart Ledges': ['GV Crate Freestanding PoH', 'GV Waterfall Freestanding PoH'],
'GF Horseback Archery Rewards': ['GF HBA 1000 Points', 'GF HBA 1500 Points'],
'Colossus Nighttime GS': ['Colossus GS Tree', 'Colossus GS Hill'],
'Graveyard Dampe Race Rewards': ['Graveyard Dampe Race Hookshot Chest', 'Graveyard Dampe Race Freestanding PoH'],
'Graveyard Royal Family Tomb Contents': ['Graveyard Royal Familys Tomb Chest', 'Song from Royal Familys Tomb'],
'DMC Child Upper Checks': ['DMC GS Crate', 'DMC Deku Scrub'],
'Haunted Wasteland Checks': ['Wasteland Chest', 'Wasteland GS'],
'Deku Tree MQ Basement GS': ['Deku Tree MQ GS Basement Graves Room','Deku Tree MQ GS Basement Back Room'],
'Dodongos Cavern Upper Business Scrubs': ['Dodongos Cavern Deku Scrub Near Bomb Bag Left', 'Dodongos Cavern Deku Scrub Near Bomb Bag Right'],
'Dodongos Cavern MQ Larvae Room': ['Dodongos Cavern MQ Larvae Room Chest', 'Dodongos Cavern MQ GS Larvae Room'],
'Fire Temple Lower Loop': ['Fire Temple Flare Dancer Chest', 'Fire Temple Boss Key Chest'],
'Fire Temple MQ Lower Loop': ['Fire Temple MQ Megaton Hammer Chest', 'Fire Temple MQ Map Chest'],
'Water Temple River Loop Chests': ['Water Temple Longshot Chest', 'Water Temple River Chest'],
'Water Temple River Checks': ['Water Temple GS River', 'Water Temple River Chest'],
'Water Temple North Basement Checks': ['Water Temple GS Near Boss Key Chest', 'Water Temple Boss Key Chest'],
'Water Temple MQ North Basement Checks': ['Water Temple MQ Freestanding Key', 'Water Temple MQ GS Freestanding Key Area'],
'Water Temple MQ Lower Checks': ['Water Temple MQ Boss Key Chest', 'Water Temple MQ Freestanding Key'],
'Spirit Temple Colossus Hands': ['Spirit Temple Silver Gauntlets Chest', 'Spirit Temple Mirror Shield Chest'],
'Spirit Temple Child Lower': ['Spirit Temple Child Bridge Chest', 'Spirit Temple Child Early Torches Chest'],
'Spirit Temple Child Top': ['Spirit Temple Sun Block Room Chest', 'Spirit Temple GS Hall After Sun Block Room'],
'Spirit Temple Adult Lower': ['Spirit Temple Early Adult Right Chest', 'Spirit Temple Compass Chest'],
'Spirit Temple MQ Child Top': ['Spirit Temple MQ Sun Block Room Chest', 'Spirit Temple MQ GS Sun Block Room'],
'Spirit Temple MQ Symphony Room': ['Spirit Temple MQ Symphony Room Chest', 'Spirit Temple MQ GS Symphony Room'],
'Spirit Temple MQ Throne Room GS': ['Spirit Temple MQ GS Nine Thrones Room West', 'Spirit Temple MQ GS Nine Thrones Room North'],
'Shadow Temple Invisible Blades Chests': ['Shadow Temple Invisible Blades Visible Chest', 'Shadow Temple Invisible Blades Invisible Chest'],
'Shadow Temple Single Pot Room': ['Shadow Temple Freestanding Key', 'Shadow Temple GS Single Giant Pot'],
'Shadow Temple Spike Walls Room': ['Shadow Temple Spike Walls Left Chest', 'Shadow Temple Boss Key Chest'],
'Shadow Temple MQ Upper Checks': ['Shadow Temple MQ Compass Chest', 'Shadow Temple MQ Hover Boots Chest'],
'Shadow Temple MQ Invisible Blades Chests': ['Shadow Temple MQ Invisible Blades Visible Chest', 'Shadow Temple MQ Invisible Blades Invisible Chest'],
'Shadow Temple MQ Spike Walls Room': ['Shadow Temple MQ Spike Walls Left Chest', 'Shadow Temple MQ Boss Key Chest'],
'Bottom of the Well Inner Rooms GS': ['Bottom of the Well GS West Inner Room', 'Bottom of the Well GS East Inner Room'],
'Bottom of the Well Dead Hand Room': ['Bottom of the Well Lens of Truth Chest', 'Bottom of the Well Invisible Chest'],
'Bottom of the Well MQ Dead Hand Room': ['Bottom of the Well MQ Compass Chest', 'Bottom of the Well MQ Dead Hand Freestanding Key'],
'Bottom of the Well MQ Basement': ['Bottom of the Well MQ GS Basement', 'Bottom of the Well MQ Lens of Truth Chest'],
'Ice Cavern Final Room': ['Ice Cavern Iron Boots Chest', 'Sheik in Ice Cavern'],
'Ice Cavern MQ Final Room': ['Ice Cavern MQ Iron Boots Chest', 'Sheik in Ice Cavern'],
'Ganons Castle Spirit Trial Chests': ['Ganons Castle Spirit Trial Crystal Switch Chest', 'Ganons Castle Spirit Trial Invisible Chest'],
}
misc_item_hint_table = {
'dampe_diary': {
'id': 0x5003,
'hint_location': 'Dampe Diary Hint',
'default_item': 'Progressive Hookshot',
'default_item_text': "Whoever reads this, please enter {area}. I will let you have my stretching, shrinking keepsake.^I'm waiting for you.&--Dampé",
'custom_item_text': "Whoever reads this, please enter {area}. I will let you have {item}.^I'm waiting for you.&--Dampé",
'default_item_fallback': "Whoever reads this, I'm sorry, but I seem to have #misplaced# my stretching, shrinking keepsake.&--Dampé",
'custom_item_fallback': "Whoever reads this, I'm sorry, but I seem to have #misplaced# {item}.&--Dampé",
'replace': {
"enter #your pocket#. I will let you have": "check #your pocket#. You will find",
},
'use_alt_hint': False,
'local_only': True,
},
'ganondorf': {
'id': 0x70CC,
'hint_location': 'Ganondorf Hint',
'default_item': 'Light Arrows',
'default_item_text': "Ha ha ha... You'll never beat me by reflecting my lightning bolts and unleashing the arrows from {area}!",
'custom_item_text': "Ha ha ha... You'll never find {item} from {area}!",
'replace': {
"from #inside Ganon's Castle#": "from #inside my castle#",
"from #outside Ganon's Castle#": "from #outside my castle#",
"from #Ganondorf's Chamber#": "from #those pots over there#",
},
'use_alt_hint': True,
'local_only': False,
},
}
misc_location_hint_table = {
'10_skulltulas': {
'id': 0x9004,
'hint_location': '10 Skulltulas Reward Hint',
'item_location': 'Kak 10 Gold Skulltula Reward',
'location_text': "Yeaaarrgh! I'm cursed!! Please save me by destroying \x05\x4110 Spiders of the Curse\x05\x40 and I will give you \x05\x42{item}\x05\x40.",
'location_fallback': "Yeaaarrgh! I'm cursed!!",
},
'20_skulltulas': {
'id': 0x9005,
'hint_location': '20 Skulltulas Reward Hint',
'item_location': 'Kak 20 Gold Skulltula Reward',
'location_text': "Yeaaarrgh! I'm cursed!! Please save me by destroying \x05\x4120 Spiders of the Curse\x05\x40 and I will give you \x05\x42{item}\x05\x40.",
'location_fallback': "Yeaaarrgh! I'm cursed!!",
},
'30_skulltulas': {
'id': 0x9006,
'hint_location': '30 Skulltulas Reward Hint',
'item_location': 'Kak 30 Gold Skulltula Reward',
'location_text': "Yeaaarrgh! I'm cursed!! Please save me by destroying \x05\x4130 Spiders of the Curse\x05\x40 and I will give you \x05\x42{item}\x05\x40.",
'location_fallback': "Yeaaarrgh! I'm cursed!!",
},
'40_skulltulas': {
'id': 0x9007,
'hint_location': '40 Skulltulas Reward Hint',
'item_location': 'Kak 40 Gold Skulltula Reward',
'location_text': "Yeaaarrgh! I'm cursed!! Please save me by destroying \x05\x4140 Spiders of the Curse\x05\x40 and I will give you \x05\x42{item}\x05\x40.",
'location_fallback': "Yeaaarrgh! I'm cursed!!",
},
'50_skulltulas': {
'id': 0x9008,
'hint_location': '50 Skulltulas Reward Hint',
'item_location': 'Kak 50 Gold Skulltula Reward',
'location_text': "Yeaaarrgh! I'm cursed!! Please save me by destroying \x05\x4150 Spiders of the Curse\x05\x40 and I will give you \x05\x42{item}\x05\x40.",
'location_fallback': "Yeaaarrgh! I'm cursed!!",
},
}
# Separate table for goal names to avoid duplicates in the hint table.
# Link's Pocket will always be an empty goal, but it's included here to
# prevent key errors during the dungeon reward lookup.
goalTable = {
'Queen Gohma': ("path to the #Spider#", "path to #Queen Gohma#", "Green"),
'King Dodongo': ("path to the #Dinosaur#", "path to #King Dodongo#", "Red"),
'Barinade': ("path to the #Tentacle#", "path to #Barinade#", "Blue"),
'Phantom Ganon': ("path to the #Puppet#", "path to #Phantom Ganon#", "Green"),
'Volvagia': ("path to the #Dragon#", "path to #Volvagia#", "Red"),
'Morpha': ("path to the #Amoeba#", "path to #Morpha#", "Blue"),
'Bongo Bongo': ("path to the #Hands#", "path to #Bongo Bongo#", "Pink"),
'Twinrova': ("path to the #Witches#", "path to #Twinrova#", "Yellow"),
'Links Pocket': ("path to #Links Pocket#", "path to #Links Pocket#", "Light Blue"),
}
# This specifies which hints will never appear due to either having known or known useless contents or due to the locations not existing.
def hintExclusions(world, clear_cache=False):
@@ -1272,10 +1692,13 @@ def hintExclusions(world, clear_cache=False):
hint = getHint(name, world.clearer_hints)
if any(item in hint.type for item in
['always',
'dual_always',
'sometimes',
'overworld',
'dungeon',
'song']):
'song',
'dual',
'exclude']):
location_hints.append(hint)
for hint in location_hints:
@@ -1287,9 +1710,9 @@ def hintExclusions(world, clear_cache=False):
def nameIsLocation(name, hint_type, world):
if isinstance(hint_type, (list, tuple)):
for htype in hint_type:
if htype in ['sometimes', 'song', 'overworld', 'dungeon', 'always'] and name not in hintExclusions(world):
if htype in ['sometimes', 'song', 'overworld', 'dungeon', 'always', 'exclude'] and name not in hintExclusions(world):
return True
elif hint_type in ['sometimes', 'song', 'overworld', 'dungeon', 'always'] and name not in hintExclusions(world):
elif hint_type in ['sometimes', 'song', 'overworld', 'dungeon', 'always', 'exclude'] and name not in hintExclusions(world):
return True
return False