OWG fixes (#79)

* Fix Waterfall entrance being inaccessible with the flippers.
Fix Spectacle Rock and Bombos Tablet requiring moon pearl

* Inverted - make the blacksmith, purple chest, bottle merchant and master sword pedestal accessible without the moon pearl.

* Fix moon pearl checks to avoid requiring moon pearl for mirror accessible locations.

* Dark Desert Teleporter requires the mitts

* Fix OWG bunny rules

* Fix another bunny rule bug.

* Separate superbunny cave into 2 regions.
For OWG, allow superbunny in superbunny cave with no mirror when entering from the bottom
Fix boots clip logic to desert teleporter ledge and TR teleporter
Fix mirror wrap logic for pyramid fairy
For insanity shuffle, exiting Superbunny Cave bottom is now in logic.

* Always require pearl for Swamp (Superbunny cannot do anything)

* Allow clipping into the GT entrance

* Add OWG tests from vt_randomizer

* Add some extra vanilla test cases

* Allow superbunny into the Blind's Hideout entrance.

* More moon pearl / superbunny fixes
Use the Catfish region properly, so Catfish Descent works.

* Allow superbunny into tavern
Fix inverted Kings Grave logic

* Inverted OWG tests

* Update unit tests for King's Tomb clip.

* All superbunny to spiral cave item (with sword)

* Bunny revive is not possible in Sanctuary.

* More inverted tests

* Add/fix test cases

* Fix logic for Magic Bat

* Fix merge to multiworld

* Fix Floodgate superbunny rule

* Require bunny revival for all dungeons except for Swamp/TR Main/Hera/Sanctuary, which have extra requirements

* Require a weapon for Castle Tower.

* Test case fixes

* Update test case - superbunny into Kakariko Tavern is in logic
This commit is contained in:
compiling
2020-04-29 01:34:30 +10:00
committed by GitHub
parent 00da5dfd65
commit 4851a905cf
34 changed files with 2442 additions and 162 deletions
+79
View File
@@ -0,0 +1,79 @@
from test.inverted_owg.TestInvertedOWG import TestInvertedOWG
class TestDarkWorld(TestInvertedOWG):
def testSouthDarkWorld(self):
self.run_location_tests([
["Hype Cave - Top", True, []],
["Hype Cave - Middle Right", True, []],
["Hype Cave - Middle Left", True, []],
["Hype Cave - Bottom", True, []],
["Hype Cave - Generous Guy", True, []],
["Stumpy", True, []],
["Digging Game", True, []],
])
def testWestDarkWorld(self):
self.run_location_tests([
["Brewery", True, []],
["C-Shaped House", True, []],
["Chest Game", True, []],
["Peg Cave", False, []],
["Peg Cave", False, [], ['Hammer']],
["Peg Cave", True, ['Hammer', 'Pegasus Boots']],
["Bumper Cave Ledge", False, []],
["Bumper Cave Ledge", True, ['Pegasus Boots']],
["Blacksmith", False, []],
["Blacksmith", True, ['Magic Mirror', 'Pegasus Boots']],
["Blacksmith", True, ['Progressive Glove', 'Progressive Glove', 'Pegasus Boots', 'Moon Pearl']],
["Purple Chest", False, []],
["Purple Chest", True, ['Magic Mirror', 'Pegasus Boots']],
["Purple Chest", True, ['Progressive Glove', 'Progressive Glove', 'Pegasus Boots', 'Moon Pearl']],
])
def testEastDarkWorld(self):
self.run_location_tests([
["Catfish", False, []],
["Catfish", True, ['Pegasus Boots']],
#todo: Qirn Jump
#["Pyramid", True, []],
["Pyramid", False, []],
#todo: Waterwalk
#["Pyramid", True, ['Pegasus Boots']],
["Pyramid", True, ['Flippers']],
["Pyramid Fairy - Left", False, []],
["Pyramid Fairy - Left", False, [], ['Magic Mirror']],
["Pyramid Fairy - Left", False, [], ['Crystal 5']],
["Pyramid Fairy - Left", False, [], ['Crystal 6']],
["Pyramid Fairy - Left", True, ['Crystal 5', 'Crystal 6', 'Magic Mirror', 'Pegasus Boots']],
["Pyramid Fairy - Right", False, []],
["Pyramid Fairy - Right", False, [], ['Magic Mirror']],
["Pyramid Fairy - Right", False, [], ['Crystal 5']],
["Pyramid Fairy - Right", False, [], ['Crystal 6']],
["Pyramid Fairy - Right", True, ['Crystal 5', 'Crystal 6', 'Magic Mirror', 'Pegasus Boots']],
])
def testMireArea(self):
self.run_location_tests([
["Mire Shed - Left", False, []],
["Mire Shed - Left", True, ['Pegasus Boots']],
["Mire Shed - Right", False, []],
["Mire Shed - Right", True, ['Pegasus Boots']],
])
+116
View File
@@ -0,0 +1,116 @@
from test.inverted_owg.TestInvertedOWG import TestInvertedOWG
class TestDeathMountain(TestInvertedOWG):
def testWestDeathMountain(self):
self.run_location_tests([
["Old Man", False, []],
["Old Man", False, [], ['Lamp']],
["Old Man", True, ['Pegasus Boots', 'Lamp']],
["Spectacle Rock Cave", False, []],
["Spectacle Rock Cave", True, ['Pegasus Boots']],
])
def testEastDeathMountain(self):
self.run_location_tests([
["Spiral Cave", False, []],
["Spiral Cave", True, ['Magic Mirror', 'Progressive Glove', 'Progressive Glove', 'Lamp', 'Progressive Sword']],
["Spiral Cave", True, ['Magic Mirror', 'Progressive Glove', 'Progressive Glove', 'Pegasus Boots', 'Progressive Sword']],
["Spiral Cave", True, ['Moon Pearl', 'Pegasus Boots']],
["Paradox Cave Lower - Far Left", False, []],
["Paradox Cave Lower - Far Left", False, [], ['Moon Pearl']],
["Paradox Cave Lower - Far Left", True, ['Moon Pearl', 'Pegasus Boots']],
["Paradox Cave Lower - Left", False, []],
["Paradox Cave Lower - Left", False, [], ['Moon Pearl']],
["Paradox Cave Lower - Left", True, ['Moon Pearl', 'Pegasus Boots']],
["Paradox Cave Lower - Middle", False, []],
["Paradox Cave Lower - Middle", False, [], ['Moon Pearl']],
["Paradox Cave Lower - Middle", True, ['Moon Pearl', 'Pegasus Boots']],
["Paradox Cave Lower - Right", False, []],
["Paradox Cave Lower - Right", False, [], ['Moon Pearl']],
["Paradox Cave Lower - Right", True, ['Moon Pearl', 'Pegasus Boots']],
["Paradox Cave Lower - Far Right", False, []],
["Paradox Cave Lower - Far Right", False, [], ['Moon Pearl']],
["Paradox Cave Lower - Far Right", True, ['Moon Pearl', 'Pegasus Boots']],
["Paradox Cave Upper - Left", False, []],
["Paradox Cave Upper - Left", False, [], ['Moon Pearl']],
["Paradox Cave Upper - Left", True, ['Moon Pearl', 'Pegasus Boots']],
["Paradox Cave Upper - Right", False, []],
["Paradox Cave Upper - Right", False, [], ['Moon Pearl']],
["Paradox Cave Upper - Right", True, ['Moon Pearl', 'Pegasus Boots']],
["Mimic Cave", False, []],
["Mimic Cave", False, [], ['Moon Pearl']],
["Mimic Cave", False, [], ['Hammer']],
["Mimic Cave", True, ['Moon Pearl', 'Hammer', 'Pegasus Boots']],
["Ether Tablet", False, []],
["Ether Tablet", False, ['Progressive Sword'], ['Progressive Sword']],
["Ether Tablet", False, [], ['Book of Mudora']],
["Ether Tablet", False, [], ['Moon Pearl']],
["Ether Tablet", True, ['Pegasus Boots', 'Moon Pearl', 'Book of Mudora', 'Progressive Sword', 'Progressive Sword']],
["Spectacle Rock", False, []],
["Spectacle Rock", False, [], ['Moon Pearl']],
["Spectacle Rock", True, ['Moon Pearl', 'Pegasus Boots']],
])
def testWestDarkWorldDeathMountain(self):
self.run_location_tests([
["Spike Cave", False, []],
["Spike Cave", False, [], ['Progressive Glove']],
["Spike Cave", False, [], ['Hammer']],
["Spike Cave", False, [], ['Cape', 'Cane of Byrna']],
# ER doesn't put in an extra potion
#["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cape']],
["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cape', 'Moon Pearl']],
["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cane of Byrna']],
["Spike Cave", True, ['Magic Upgrade (1/2)', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cape']],
["Spike Cave", True, ['Magic Upgrade (1/2)', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cane of Byrna']],
["Spike Cave", True, ['Magic Upgrade (1/4)', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cape']],
["Spike Cave", True, ['Magic Upgrade (1/4)', 'Hammer', 'Progressive Glove', 'Pegasus Boots', 'Cane of Byrna']],
])
def testEastDarkWorldDeathMountain(self):
self.run_location_tests([
["Superbunny Cave - Top", False, []],
["Superbunny Cave - Top", True, ['Pegasus Boots']],
["Superbunny Cave - Bottom", False, []],
["Superbunny Cave - Bottom", True, ['Pegasus Boots']],
["Hookshot Cave - Bottom Right", False, []],
["Hookshot Cave - Bottom Right", False, [], ['Hookshot', 'Pegasus Boots']],
["Hookshot Cave - Bottom Right", False, [], ['Progressive Glove', 'Pegasus Boots', 'Magic Mirror']],
#todo: Floating island clip
#["Hookshot Cave - Bottom Right", True, ['Pegasus Boots']],
["Hookshot Cave - Bottom Right", True, ['Pegasus Boots', 'Progressive Glove']],
["Hookshot Cave - Bottom Left", False, []],
["Hookshot Cave - Bottom Left", False, [], ['Hookshot']],
["Hookshot Cave - Bottom Left", False, [], ['Progressive Glove', 'Pegasus Boots', 'Magic Mirror']],
#["Hookshot Cave - Bottom Left", True, ['Pegasus Boots', 'Hookshot']],
["Hookshot Cave - Bottom Left", True, ['Pegasus Boots', 'Hookshot', 'Progressive Glove']],
["Hookshot Cave - Top Left", False, []],
["Hookshot Cave - Top Left", False, [], ['Hookshot']],
["Hookshot Cave - Top Left", False, [], ['Progressive Glove', 'Pegasus Boots', 'Magic Mirror']],
#["Hookshot Cave - Top Left", True, ['Pegasus Boots', 'Hookshot']],
["Hookshot Cave - Top Left", True, ['Pegasus Boots', 'Hookshot', 'Progressive Glove']],
["Hookshot Cave - Top Right", False, []],
["Hookshot Cave - Top Right", False, [], ['Hookshot']],
["Hookshot Cave - Top Right", False, [], ['Progressive Glove', 'Pegasus Boots', 'Magic Mirror']],
#["Hookshot Cave - Top Right", True, ['Pegasus Boots', 'Hookshot']],
["Hookshot Cave - Top Right", True, ['Pegasus Boots', 'Hookshot', 'Progressive Glove']],
])
+114
View File
@@ -0,0 +1,114 @@
from test.inverted_owg.TestInvertedOWG import TestInvertedOWG
class TestDungeons(TestInvertedOWG):
def testFirstDungeonChests(self):
self.run_location_tests([
["Hyrule Castle - Map Chest", False, []],
["Hyrule Castle - Map Chest", True, ['Beat Agahnim 1']],
["Hyrule Castle - Map Chest", True, ['Moon Pearl', 'Pegasus Boots']],
["Hyrule Castle - Map Chest", True, ['Magic Mirror', 'Pegasus Boots']],
["Sanctuary", False, []],
["Sanctuary", False, ['Beat Agahnim 1']],
["Sanctuary", True, ['Magic Mirror', 'Beat Agahnim 1']],
["Sanctuary", True, ['Lamp', 'Beat Agahnim 1', 'Small Key (Escape)']],
["Sanctuary", True, ['Moon Pearl', 'Pegasus Boots']],
["Sanctuary", True, ['Magic Mirror', 'Pegasus Boots']],
["Sewers - Secret Room - Left", False, []],
["Sewers - Secret Room - Left", True, ['Moon Pearl', 'Progressive Glove', 'Pegasus Boots']],
["Sewers - Secret Room - Left", True, ['Moon Pearl', 'Pegasus Boots', 'Lamp', 'Small Key (Escape)']],
["Sewers - Secret Room - Left", True, ['Magic Mirror', 'Pegasus Boots', 'Lamp', 'Small Key (Escape)']],
["Sewers - Secret Room - Left", True, ['Beat Agahnim 1', 'Lamp', 'Small Key (Escape)']],
["Eastern Palace - Compass Chest", False, []],
["Eastern Palace - Compass Chest", True, ['Moon Pearl', 'Pegasus Boots']],
["Eastern Palace - Compass Chest", True, ['Magic Mirror', 'Pegasus Boots']],
["Eastern Palace - Compass Chest", True, ['Beat Agahnim 1']],
["Desert Palace - Map Chest", False, []],
["Desert Palace - Map Chest", True, ['Moon Pearl', 'Pegasus Boots']],
["Desert Palace - Map Chest", True, ['Book of Mudora', 'Magic Mirror', 'Pegasus Boots']],
["Desert Palace - Boss", False, []],
["Desert Palace - Boss", False, [], ['Small Key (Desert Palace)']],
["Desert Palace - Boss", False, [], ['Big Key (Desert Palace)']],
["Desert Palace - Boss", False, [], ['Lamp', 'Fire Rod']],
["Desert Palace - Boss", True, ['Progressive Sword', 'Small Key (Desert Palace)', 'Big Key (Desert Palace)', 'Moon Pearl', 'Pegasus Boots', 'Lamp']],
["Desert Palace - Boss", True, ['Progressive Sword', 'Small Key (Desert Palace)', 'Big Key (Desert Palace)', 'Moon Pearl', 'Pegasus Boots', 'Fire Rod']],
["Tower of Hera - Basement Cage", False, []],
["Tower of Hera - Basement Cage", False, [], ['Moon Pearl']],
["Tower of Hera - Basement Cage", True, ['Pegasus Boots', 'Moon Pearl']],
["Castle Tower - Room 03", False, []],
["Castle Tower - Room 03", False, [], ['Progressive Sword', 'Hammer', 'Progressive Bow', 'Fire Rod', 'Ice Rod', 'Cane of Somaria', 'Cane of Byrna']],
["Castle Tower - Room 03", True, ['Pegasus Boots', 'Progressive Sword']],
["Castle Tower - Room 03", True, ['Pegasus Boots', 'Progressive Bow']],
#todo: Qirn Jump, Waterwalk
#["Palace of Darkness - Shooter Room", True, []],
#["Palace of Darkness - Shooter Room", True, ['Pegasus Boots']],
["Palace of Darkness - Shooter Room", True, ['Hammer']],
["Palace of Darkness - Shooter Room", True, ['Flippers']],
["Palace of Darkness - Shooter Room", True, ['Pegasus Boots', 'Progressive Glove']],
["Palace of Darkness - Shooter Room", True, ['Pegasus Boots', 'Magic Mirror']],
["Swamp Palace - Entrance", False, []],
["Swamp Palace - Entrance", False, [], ['Magic Mirror']],
["Swamp Palace - Entrance", False, [], ['Flippers']],
["Swamp Palace - Entrance", True, ['Magic Mirror', 'Flippers', 'Pegasus Boots']],
["Swamp Palace - Entrance", True, ['Magic Mirror', 'Flippers', 'Beat Agahnim 1']],
["Skull Woods - Compass Chest", True, []],
["Skull Woods - Big Chest", False, []],
["Skull Woods - Big Chest", False, [], ['Big Key (Skull Woods)']],
["Skull Woods - Big Chest", True, ['Big Key (Skull Woods)']],
["Skull Woods - Big Key Chest", True, []],
["Skull Woods - Bridge Room", False, []],
["Skull Woods - Bridge Room", False, [], ['Fire Rod']],
["Skull Woods - Bridge Room", True, ['Fire Rod']],
["Thieves' Town - Map Chest", True, []],
["Ice Palace - Compass Chest", False, []],
["Ice Palace - Compass Chest", False, [], ['Fire Rod', 'Bombos', 'Progressive Sword']],
#todo: Qirn Jump
#["Ice Palace - Compass Chest", True, ['Fire Rod']],
#["Ice Palace - Compass Chest", True, ['Bombos', 'Progressive Sword']],
["Ice Palace - Compass Chest", True, ['Pegasus Boots', 'Magic Mirror', 'Fire Rod']],
["Ice Palace - Compass Chest", True, ['Pegasus Boots', 'Magic Mirror', 'Bombos', 'Progressive Sword']],
["Misery Mire - Bridge Chest", False, []],
["Misery Mire - Bridge Chest", False, [], ['Ether']],
["Misery Mire - Bridge Chest", False, [], ['Progressive Sword']],
["Misery Mire - Bridge Chest", True, ['Pegasus Boots', 'Ether', 'Progressive Sword']],
["Turtle Rock - Compass Chest", False, []],
["Turtle Rock - Compass Chest", False, [], ['Cane of Somaria']],
["Turtle Rock - Compass Chest", True, ['Pegasus Boots', 'Magic Mirror', 'Moon Pearl', 'Cane of Somaria', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)', 'Small Key (Turtle Rock)']],
["Turtle Rock - Compass Chest", True, ['Pegasus Boots', 'Quake', 'Progressive Sword', 'Cane of Somaria']],
["Turtle Rock - Chain Chomps", False, []],
["Turtle Rock - Chain Chomps", True, ['Pegasus Boots', 'Magic Mirror', 'Moon Pearl']],
["Turtle Rock - Crystaroller Room", False, []],
["Turtle Rock - Crystaroller Room", True, ['Pegasus Boots', 'Magic Mirror', 'Moon Pearl', 'Big Key (Turtle Rock)']],
["Turtle Rock - Crystaroller Room", True, ['Pegasus Boots', 'Magic Mirror', 'Moon Pearl', 'Lamp', 'Cane of Somaria']],
["Ganons Tower - Hope Room - Left", False, []],
["Ganons Tower - Hope Room - Left", False, [], ['Crystal 1']],
["Ganons Tower - Hope Room - Left", False, [], ['Crystal 2']],
["Ganons Tower - Hope Room - Left", False, [], ['Crystal 3']],
["Ganons Tower - Hope Room - Left", False, [], ['Crystal 4']],
["Ganons Tower - Hope Room - Left", False, [], ['Crystal 5']],
["Ganons Tower - Hope Room - Left", False, [], ['Crystal 6']],
["Ganons Tower - Hope Room - Left", False, [], ['Crystal 7']],
["Ganons Tower - Hope Room - Left", True, ['Beat Agahnim 1', 'Hookshot', 'Crystal 1', 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 5', 'Crystal 6', 'Crystal 7']],
["Ganons Tower - Hope Room - Left", True, ['Pegasus Boots', 'Magic Mirror', 'Hookshot', 'Crystal 1', 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 5', 'Crystal 6', 'Crystal 7']],
["Ganons Tower - Hope Room - Left", True, ['Pegasus Boots', 'Moon Pearl', 'Hookshot', 'Crystal 1', 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 5', 'Crystal 6', 'Crystal 7']],
])
+30
View File
@@ -0,0 +1,30 @@
from BaseClasses import World
from Dungeons import create_dungeons, get_dungeon_item_pool
from EntranceShuffle import link_inverted_entrances
from InvertedRegions import create_inverted_regions
from ItemList import generate_itempool, difficulties
from Items import ItemFactory
from Regions import mark_light_world_regions, create_shops
from Rules import set_rules
from test.TestBase import TestBase
class TestInvertedOWG(TestBase):
def setUp(self):
self.world = World(1, {1:'vanilla'}, {1:'owglitches'}, {1:'inverted'}, {1:'random'}, {1:'normal'}, {1:'normal'}, {1:False}, {1:'on'}, {1:'ganon'}, 'balanced', {1:'items'},
True, {1:False}, False, None, {1:False})
self.world.difficulty_requirements[1] = difficulties['normal']
create_inverted_regions(self.world, 1)
create_dungeons(self.world, 1)
create_shops(self.world, 1)
link_inverted_entrances(self.world, 1)
generate_itempool(self.world, 1)
self.world.required_medallions[1] = ['Ether', 'Quake']
self.world.itempool.extend(get_dungeon_item_pool(self.world))
self.world.itempool.extend(ItemFactory(['Green Pendant', 'Red Pendant', 'Blue Pendant', 'Beat Agahnim 1', 'Beat Agahnim 2', 'Crystal 1', 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 5', 'Crystal 6', 'Crystal 7'], 1))
self.world.get_location('Agahnim 1', 1).item = None
self.world.get_location('Agahnim 2', 1).item = None
self.world.precollected_items.clear()
self.world.itempool.append(ItemFactory('Pegasus Boots', 1))
mark_light_world_regions(self.world, 1)
set_rules(self.world, 1)
+292
View File
@@ -0,0 +1,292 @@
from test.inverted_owg.TestInvertedOWG import TestInvertedOWG
class TestLightWorld(TestInvertedOWG):
def testLightWorld(self):
self.run_location_tests([
["Master Sword Pedestal", False, []],
["Master Sword Pedestal", False, [], ['Green Pendant']],
["Master Sword Pedestal", False, [], ['Red Pendant']],
["Master Sword Pedestal", False, [], ['Blue Pendant']],
["Master Sword Pedestal", True, ['Green Pendant', 'Red Pendant', 'Blue Pendant', 'Moon Pearl', 'Pegasus Boots']],
["Master Sword Pedestal", True, ['Green Pendant', 'Red Pendant', 'Blue Pendant', 'Magic Mirror', 'Pegasus Boots']],
["Link's Uncle", False, []],
["Link's Uncle", False, [], ['Moon Pearl', 'Magic Mirror']],
["Link's Uncle", True, ['Moon Pearl', 'Pegasus Boots']],
["Secret Passage", False, []],
["Secret Passage", False, [], ['Moon Pearl', 'Magic Mirror']],
["Secret Passage", True, ['Moon Pearl', 'Pegasus Boots']],
["King's Tomb", False, []],
["King's Tomb", False, [], ['Pegasus Boots']],
["King's Tomb", False, [], ['Moon Pearl']],
["King's Tomb", True, ['Pegasus Boots', 'Magic Mirror', 'Moon Pearl']],
["Floodgate Chest", False, []],
["Floodgate Chest", True, ['Moon Pearl', 'Pegasus Boots']],
["Floodgate Chest", True, ['Magic Mirror', 'Pegasus Boots']],
["Kakariko Tavern", False, []],
["Kakariko Tavern", False, [], ['Moon Pearl', 'Magic Mirror']],
["Kakariko Tavern", True, ['Moon Pearl', 'Pegasus Boots']],
["Kakariko Tavern", True, ['Magic Mirror', 'Pegasus Boots']],
["Kakariko Tavern", True, ['Beat Agahnim 1', 'Moon Pearl']],
["Kakariko Tavern", True, ['Beat Agahnim 1', 'Magic Mirror']],
["Chicken House", False, []],
["Chicken House", False, [], ['Moon Pearl']],
["Chicken House", True, ['Moon Pearl', 'Pegasus Boots']],
["Aginah's Cave", False, []],
["Aginah's Cave", False, [], ['Moon Pearl']],
["Aginah's Cave", True, ['Moon Pearl', 'Pegasus Boots']],
["Sahasrahla's Hut - Left", False, []],
["Sahasrahla's Hut - Left", False, ['Moon Pearl', 'Magic Mirror']],
["Sahasrahla's Hut - Left", True, ['Moon Pearl', 'Pegasus Boots']],
#todo: superbunny into sahasrahla in logic?
#["Sahasrahla's Hut - Left", True, ['Magic Mirror', 'Pegasus Boots']],
#["Sahasrahla's Hut - Left", True, ['Beat Agahnim 1', 'Pegasus Boots']],
["Sahasrahla's Hut - Left", True, ['Moon Pearl', 'Beat Agahnim 1']],
["Sahasrahla's Hut - Middle", False, []],
["Sahasrahla's Hut - Middle", False, ['Moon Pearl', 'Magic Mirror']],
["Sahasrahla's Hut - Middle", True, ['Moon Pearl', 'Pegasus Boots']],
#["Sahasrahla's Hut - Middle", True, ['Magic Mirror', 'Pegasus Boots']],
#["Sahasrahla's Hut - Middle", True, ['Beat Agahnim 1', 'Pegasus Boots']],
["Sahasrahla's Hut - Middle", True, ['Moon Pearl', 'Beat Agahnim 1']],
["Sahasrahla's Hut - Right", False, []],
["Sahasrahla's Hut - Right", False, ['Moon Pearl', 'Magic Mirror']],
["Sahasrahla's Hut - Right", True, ['Moon Pearl', 'Pegasus Boots']],
#["Sahasrahla's Hut - Right", True, ['Magic Mirror', 'Pegasus Boots']],
#["Sahasrahla's Hut - Right", True, ['Beat Agahnim 1', 'Pegasus Boots']],
["Sahasrahla's Hut - Right", True, ['Moon Pearl', 'Beat Agahnim 1']],
["Kakariko Well - Top", False, []],
["Kakariko Well - Top", False, [], ['Moon Pearl']],
["Kakariko Well - Top", True, ['Moon Pearl', 'Pegasus Boots']],
["Kakariko Well - Left", False, []],
["Kakariko Well - Left", True, ['Moon Pearl', 'Pegasus Boots']],
["Kakariko Well - Left", True, ['Magic Mirror', 'Pegasus Boots']],
["Kakariko Well - Left", True, ['Beat Agahnim 1']],
["Kakariko Well - Middle", False, []],
["Kakariko Well - Middle", True, ['Moon Pearl', 'Pegasus Boots']],
["Kakariko Well - Middle", True, ['Magic Mirror', 'Pegasus Boots']],
["Kakariko Well - Middle", True, ['Beat Agahnim 1']],
["Kakariko Well - Right", False, []],
["Kakariko Well - Right", True, ['Moon Pearl', 'Pegasus Boots']],
["Kakariko Well - Right", True, ['Magic Mirror', 'Pegasus Boots']],
["Kakariko Well - Right", True, ['Beat Agahnim 1']],
["Kakariko Well - Bottom", False, []],
["Kakariko Well - Bottom", True, ['Moon Pearl', 'Pegasus Boots']],
["Kakariko Well - Bottom", True, ['Magic Mirror', 'Pegasus Boots']],
["Kakariko Well - Bottom", True, ['Beat Agahnim 1']],
["Blind's Hideout - Top", False, []],
["Blind's Hideout - Top", False, [], ['Moon Pearl']],
["Blind's Hideout - Top", True, ['Moon Pearl', 'Pegasus Boots']],
["Blind's Hideout - Left", False, []],
["Blind's Hideout - Left", True, ['Moon Pearl', 'Pegasus Boots']],
["Blind's Hideout - Left", True, ['Magic Mirror', 'Pegasus Boots']],
["Blind's Hideout - Left", True, ['Magic Mirror', 'Beat Agahnim 1']],
["Blind's Hideout - Right", False, []],
["Blind's Hideout - Right", True, ['Moon Pearl', 'Pegasus Boots']],
["Blind's Hideout - Right", True, ['Magic Mirror', 'Pegasus Boots']],
["Blind's Hideout - Right", True, ['Magic Mirror', 'Beat Agahnim 1']],
["Blind's Hideout - Far Left", False, []],
["Blind's Hideout - Far Left", True, ['Moon Pearl', 'Pegasus Boots']],
["Blind's Hideout - Far Left", True, ['Magic Mirror', 'Pegasus Boots']],
["Blind's Hideout - Far Left", True, ['Magic Mirror', 'Beat Agahnim 1']],
["Blind's Hideout - Far Right", False, []],
["Blind's Hideout - Far Right", True, ['Moon Pearl', 'Pegasus Boots']],
["Blind's Hideout - Far Right", True, ['Magic Mirror', 'Pegasus Boots']],
["Blind's Hideout - Far Right", True, ['Magic Mirror', 'Beat Agahnim 1']],
["Bonk Rock Cave", False, []],
["Bonk Rock Cave", False, [], ['Pegasus Boots']],
["Bonk Rock Cave", False, [], ['Moon Pearl']],
["Bonk Rock Cave", True, ['Moon Pearl', 'Pegasus Boots']],
["Mini Moldorm Cave - Far Left", False, []],
["Mini Moldorm Cave - Far Left", False, [], ['Moon Pearl']],
["Mini Moldorm Cave - Far Left", True, ['Moon Pearl', 'Pegasus Boots']],
["Mini Moldorm Cave - Left", False, []],
["Mini Moldorm Cave - Left", False, [], ['Moon Pearl']],
["Mini Moldorm Cave - Right", False, []],
["Mini Moldorm Cave - Right", False, [], ['Moon Pearl']],
["Mini Moldorm Cave - Right", True, ['Moon Pearl', 'Pegasus Boots']],
["Mini Moldorm Cave - Far Right", False, []],
["Mini Moldorm Cave - Far Right", False, [], ['Moon Pearl']],
["Ice Rod Cave", False, []],
#["Ice Rod Cave", False, [], ['Moon Pearl', 'BigRedBomb']],
["Ice Rod Cave", False, [], ['Moon Pearl']],
["Ice Rod Cave", True, ['Moon Pearl', 'Pegasus Boots']],
#I don't think so
#["Ice Rod Cave", True, ['Magic Mirror', 'Pegasus Boots', 'BigRedBomb']],
#["Ice Rod Cave", True, ['Magic Mirror', 'Beat Agahnim 1', 'BigRedBomb']],
["Bottle Merchant", False, []],
["Bottle Merchant", True, ['Pegasus Boots', 'Magic Mirror']],
["Bottle Merchant", True, ['Moon Pearl', 'Pegasus Boots']],
["Sahasrahla", False, []],
["Sahasrahla", False, [], ['Green Pendant']],
["Sahasrahla", True, ['Green Pendant', 'Magic Mirror', 'Pegasus Boots']],
["Sahasrahla", True, ['Green Pendant', 'Moon Pearl', 'Pegasus Boots']],
["Magic Bat", False, []],
["Magic Bat", False, [], ['Magic Powder']],
["Magic Bat", False, [], ['Moon Pearl']],
["Magic Bat", True, ['Magic Powder', 'Pegasus Boots', 'Moon Pearl']],
["Sick Kid", False, []],
["Sick Kid", False, [], ['AnyBottle']],
["Sick Kid", False, ['Bottle (Bee)']],
["Sick Kid", False, ['Bottle (Fairy)']],
["Sick Kid", False, ['Bottle (Red Potion)']],
["Sick Kid", False, ['Bottle (Green Potion)']],
["Sick Kid", False, ['Bottle (Blue Potion)']],
["Sick Kid", False, ['Bottle']],
["Sick Kid", False, ['Bottle (Good Bee)']],
["Sick Kid", True, ['Bottle (Bee)', 'Magic Mirror', 'Pegasus Boots']],
["Sick Kid", True, ['Bottle (Bee)', 'Moon Pearl', 'Pegasus Boots']],
["Sick Kid", True, ['Bottle (Fairy)', 'Magic Mirror', 'Pegasus Boots']],
["Sick Kid", True, ['Bottle (Fairy)', 'Moon Pearl', 'Pegasus Boots']],
["Sick Kid", True, ['Bottle (Red Potion)', 'Magic Mirror', 'Pegasus Boots']],
["Sick Kid", True, ['Bottle (Red Potion)', 'Moon Pearl', 'Pegasus Boots']],
["Sick Kid", True, ['Bottle (Green Potion)', 'Magic Mirror', 'Pegasus Boots']],
["Sick Kid", True, ['Bottle (Green Potion)', 'Moon Pearl', 'Pegasus Boots']],
["Sick Kid", True, ['Bottle (Blue Potion)', 'Magic Mirror', 'Pegasus Boots']],
["Sick Kid", True, ['Bottle (Blue Potion)', 'Moon Pearl', 'Pegasus Boots']],
["Sick Kid", True, ['Bottle', 'Magic Mirror', 'Pegasus Boots']],
["Sick Kid", True, ['Bottle', 'Moon Pearl', 'Pegasus Boots']],
["Sick Kid", True, ['Bottle (Good Bee)', 'Magic Mirror', 'Pegasus Boots']],
["Sick Kid", True, ['Bottle (Good Bee)', 'Moon Pearl', 'Pegasus Boots']],
["Hobo", False, []],
["Hobo", False, [], ['Moon Pearl']],
["Hobo", True, ['Moon Pearl', 'Pegasus Boots']],
["Hobo", True, ['Moon Pearl', 'Beat Agahnim 1']],
["Bombos Tablet", False, []],
["Bombos Tablet", False, ['Progressive Sword'], ['Progressive Sword']],
["Bombos Tablet", False, [], ['Book of Mudora']],
["Bombos Tablet", True, ['Moon Pearl', 'Book of Mudora', 'Pegasus Boots', 'Progressive Sword', 'Progressive Sword']],
["Bombos Tablet", True, ['Magic Mirror', 'Book of Mudora', 'Pegasus Boots', 'Progressive Sword', 'Progressive Sword']],
["King Zora", False, []],
["King Zora", False, [], ['Moon Pearl']],
["King Zora", True, ['Moon Pearl', 'Pegasus Boots']],
["Lost Woods Hideout", False, []],
["Lost Woods Hideout", False, [], ['Moon Pearl']],
["Lost Woods Hideout", True, ['Moon Pearl', 'Pegasus Boots']],
["Lumberjack Tree", False, []],
["Lumberjack Tree", False, [], ['Beat Agahnim 1']],
["Lumberjack Tree", False, [], ['Pegasus Boots']],
["Lumberjack Tree", False, [], ['Moon Pearl']],
["Lumberjack Tree", True, ['Pegasus Boots', 'Moon Pearl', 'Beat Agahnim 1']],
["Cave 45", False, []],
["Cave 45", True, ['Moon Pearl', 'Pegasus Boots']],
["Cave 45", True, ['Magic Mirror', 'Pegasus Boots']],
["Cave 45", True, ['Magic Mirror', 'Beat Agahnim 1']],
["Graveyard Cave", False, []],
["Graveyard Cave", False, [], ['Moon Pearl']],
["Graveyard Cave", True, ['Moon Pearl', 'Pegasus Boots']],
["Checkerboard Cave", False, []],
["Checkerboard Cave", False, [], ['Progressive Glove']],
["Checkerboard Cave", False, [], ['Moon Pearl']],
["Checkerboard Cave", True, ['Progressive Glove', 'Pegasus Boots', 'Moon Pearl']],
["Mini Moldorm Cave - Generous Guy", False, []],
["Mini Moldorm Cave - Generous Guy", False, [], ['Moon Pearl']],
["Mini Moldorm Cave - Generous Guy", True, ['Moon Pearl', 'Pegasus Boots']],
["Library", False, []],
["Library", False, [], ['Pegasus Boots']],
["Library", True, ['Pegasus Boots', 'Moon Pearl']],
["Library", True, ['Pegasus Boots', 'Magic Mirror']],
["Mushroom", False, []],
["Mushroom", False, [], ['Moon Pearl']],
["Mushroom", True, ['Moon Pearl', 'Pegasus Boots']],
["Potion Shop", False, []],
["Potion Shop", False, [], ['Mushroom']],
["Potion Shop", False, [], ['Moon Pearl']],
["Potion Shop", True, ['Mushroom', 'Moon Pearl', 'Pegasus Boots']],
["Maze Race", False, []],
["Maze Race", False, [], ['Moon Pearl']],
["Maze Race", True, ['Moon Pearl', 'Pegasus Boots']],
["Desert Ledge", False, []],
["Desert Ledge", True, ['Book of Mudora', 'Magic Mirror', 'Pegasus Boots']],
["Desert Ledge", True, ['Book of Mudora', 'Beat Agahnim 1']],
["Desert Ledge", True, ['Moon Pearl', 'Pegasus Boots']],
["Lake Hylia Island", False, []],
["Lake Hylia Island", False, [], ['Moon Pearl']],
["Lake Hylia Island", True, ['Moon Pearl', 'Pegasus Boots']],
["Sunken Treasure", False, []],
["Sunken Treasure", True, ['Moon Pearl', 'Pegasus Boots']],
["Sunken Treasure", True, ['Magic Mirror', 'Pegasus Boots']],
["Sunken Treasure", True, ['Magic Mirror', 'Beat Agahnim 1']],
["Zora's Ledge", False, []],
["Zora's Ledge", False, [], ['Moon Pearl']],
["Zora's Ledge", True, ['Moon Pearl', 'Pegasus Boots']],
["Flute Spot", False, []],
["Flute Spot", False, [], ['Shovel']],
["Flute Spot", False, [], ['Moon Pearl']],
["Flute Spot", True, ['Shovel', 'Moon Pearl', 'Pegasus Boots']],
["Waterfall Fairy - Left", False, []],
["Waterfall Fairy - Left", False, [], ['Moon Pearl']],
["Waterfall Fairy - Left", True, ['Moon Pearl', 'Pegasus Boots', 'Flippers']],
#todo: Waterwalking into caves not in logic
# ["Waterfall Fairy - Left", True, ['Moon Pearl', 'Pegasus Boots']],
# ["Waterfall Fairy - Left", True, ['Moon Pearl', 'Beat Agahnim 1']],
# ["Waterfall Fairy - Left", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']],
# ["Waterfall Fairy - Left", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']],
["Waterfall Fairy - Right", False, []],
["Waterfall Fairy - Right", False, [], ['Moon Pearl']],
["Waterfall Fairy - Right", True, ['Moon Pearl', 'Pegasus Boots', 'Flippers']],
# ["Waterfall Fairy - Right", True, ['Moon Pearl', 'Pegasus Boots']],
# ["Waterfall Fairy - Right", True, ['Moon Pearl', 'Beat Agahnim 1']],
# ["Waterfall Fairy - Right", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']],
# ["Waterfall Fairy - Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']],
# Bomb Merchant is not a separate check, and is only used as part of the Pyramid Fairy rules
# ["Bomb Merchant", False, []],
# ["Bomb Merchant", False, [], ['Crystal 5']],
# ["Bomb Merchant", False, [], ['Crystal 6']],
# ["Bomb Merchant", True, ['Crystal 5', 'Crystal 6', 'Moon Pearl', 'Pegasus Boots']],
# ["Bomb Merchant", True, ['Crystal 5', 'Crystal 6', 'Magic Mirror', 'Pegasus Boots']],
# ["Bomb Merchant", True, ['Crystal 5', 'Crystal 6', 'Beat Agahnim 1']],
["Ganon", False, []],
])
View File