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

View File

@@ -4,19 +4,19 @@ 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
from Regions import mark_light_world_regions, create_shops
from Rules import set_rules
from test.TestVanilla import TestVanilla
from test.TestBase import TestBase
class TestInverted(TestVanilla):
class TestInverted(TestBase):
def setUp(self):
self.world = World(1, 'vanilla', 'noglitches', 'inverted', 'random', 'normal', 'normal', 'none', 'on', 'ganon', 'balanced',
True, False, False, False, False, False, False, False, False, None,
'none', False)
self.world.difficulty_requirements = difficulties['normal']
self.world = World(1, {1:'vanilla'}, {1:'noglitches'}, {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']
@@ -24,5 +24,5 @@ class TestInverted(TestVanilla):
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
mark_light_world_regions(self.world)
mark_light_world_regions(self.world, 1)
set_rules(self.world, 1)

View File

@@ -3,7 +3,7 @@ import unittest
from BaseClasses import World
from Dungeons import create_dungeons
from EntranceShuffle import connect_entrance, Inverted_LW_Entrances, Inverted_LW_Dungeon_Entrances, Inverted_LW_Single_Cave_Doors, Inverted_Old_Man_Entrances, Inverted_DW_Entrances, Inverted_DW_Dungeon_Entrances, Inverted_DW_Single_Cave_Doors, \
Inverted_LW_Entrances_Must_Exit, Inverted_LW_Dungeon_Entrances_Must_Exit, Inverted_Bomb_Shop_Multi_Cave_Doors, Inverted_Bomb_Shop_Single_Cave_Doors, Inverted_Blacksmith_Single_Cave_Doors, Inverted_Blacksmith_Multi_Cave_Doors
Inverted_LW_Entrances_Must_Exit, Inverted_LW_Dungeon_Entrances_Must_Exit, Inverted_Bomb_Shop_Multi_Cave_Doors, Inverted_Bomb_Shop_Single_Cave_Doors, Blacksmith_Single_Cave_Doors, Inverted_Blacksmith_Multi_Cave_Doors
from InvertedRegions import create_inverted_regions
from ItemList import difficulties
from Rules import set_inverted_big_bomb_rules
@@ -12,10 +12,9 @@ from Rules import set_inverted_big_bomb_rules
class TestInvertedBombRules(unittest.TestCase):
def setUp(self):
self.world = World(1, 'vanilla', 'noglitches', 'inverted', 'random', 'normal', 'normal', 'none', 'on', 'ganon', 'balanced',
True, False, False, False, False, False, False, False, False, None,
'none', False)
self.world.difficulty_requirements = difficulties['normal']
self.world = World(1, {1:'vanilla'}, {1:'noglitches'}, {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)
@@ -26,13 +25,13 @@ class TestInvertedBombRules(unittest.TestCase):
for entrance_name in (entrances + must_exits):
if entrance_name not in ['Desert Palace Entrance (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave (Bottom)']:
entrance = self.world.get_entrance(entrance_name, 1)
connect_entrance(self.world, entrance, 'Inverted Big Bomb Shop', 1)
connect_entrance(self.world, entrance_name, 'Inverted Big Bomb Shop', 1)
set_inverted_big_bomb_rules(self.world, 1)
entrance.connected_region.entrances.remove(entrance)
entrance.connected_region = None
def testInvalidEntrancesAreNotUsed(self):
entrances = list(Inverted_Blacksmith_Multi_Cave_Doors + Inverted_Blacksmith_Single_Cave_Doors + Inverted_Bomb_Shop_Multi_Cave_Doors + Inverted_Bomb_Shop_Single_Cave_Doors)
entrances = list(Inverted_Blacksmith_Multi_Cave_Doors + Blacksmith_Single_Cave_Doors + Inverted_Bomb_Shop_Multi_Cave_Doors + Inverted_Bomb_Shop_Single_Cave_Doors)
invalid_entrances = ['Desert Palace Entrance (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave (Bottom)', 'Pyramid Fairy']
for invalid_entrance in invalid_entrances:
self.assertNotIn(invalid_entrance, entrances)
@@ -40,7 +39,7 @@ class TestInvertedBombRules(unittest.TestCase):
def testInvalidEntrances(self):
for entrance_name in ['Desert Palace Entrance (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave (Bottom)']:
entrance = self.world.get_entrance(entrance_name, 1)
connect_entrance(self.world, entrance, 'Inverted Big Bomb Shop', 1)
connect_entrance(self.world, entrance_name, 'Inverted Big Bomb Shop', 1)
with self.assertRaises(Exception):
set_inverted_big_bomb_rules(self.world, 1)
entrance.connected_region.entrances.remove(entrance)

View File

@@ -1,10 +1,10 @@
from test.inverted.TestInverted import TestInverted
class TestInvertedDeathMountain(TestInverted):
class TestInvertedDarkWorld(TestInverted):
def testNorthWest(self):
self.run_tests([
self.run_location_tests([
["Brewery", True, []],
["C-Shaped House", True, []],
@@ -30,22 +30,18 @@ class TestInvertedDeathMountain(TestInverted):
["Blacksmith", False, []],
["Blacksmith", False, [], ['Progressive Glove', 'Magic Mirror']],
["Blacksmith", True, ['Progressive Glove', 'Progressive Glove', 'Moon Pearl']],
#@todo: Can get this without moon pearl
#["Blacksmith", True, ['Beat Agahnim 1', 'Magic Mirror']],
["Blacksmith", True, ['Beat Agahnim 1', 'Magic Mirror', 'Moon Pearl']],
["Blacksmith", True, ['Beat Agahnim 1', 'Magic Mirror']],
["Blacksmith", True, ['Progressive Glove', 'Hammer', 'Magic Mirror', 'Moon Pearl']],
["Purple Chest", False, []],
["Purple Chest", False, [], ['Progressive Glove', 'Magic Mirror']],
["Purple Chest", True, ['Progressive Glove', 'Progressive Glove', 'Moon Pearl']],
# @todo: Can get this without moon pearl
#["Purple Chest", True, ['Beat Agahnim 1', 'Magic Mirror']],
["Purple Chest", True, ['Beat Agahnim 1', 'Magic Mirror', 'Moon Pearl']],
["Purple Chest", True, ['Beat Agahnim 1', 'Magic Mirror']],
["Purple Chest", True, ['Progressive Glove', 'Hammer', 'Magic Mirror', 'Moon Pearl']],
])
def testNorthEast(self):
self.run_tests([
self.run_location_tests([
["Catfish", False, []],
["Catfish", False, [], ['Progressive Glove', 'Flippers']],
["Catfish", False, [], ['Progressive Glove', 'Magic Mirror']],
@@ -80,7 +76,7 @@ class TestInvertedDeathMountain(TestInverted):
])
def testSouth(self):
self.run_tests([
self.run_location_tests([
["Hype Cave - Top", True, []],
["Hype Cave - Middle Right", True, []],
@@ -99,7 +95,7 @@ class TestInvertedDeathMountain(TestInverted):
])
def testMireArea(self):
self.run_tests([
self.run_location_tests([
["Mire Shed - Left", False, []],
["Mire Shed - Left", False, [], ['Flute', 'Magic Mirror']],
["Mire Shed - Left", True, ['Moon Pearl', 'Flute', 'Progressive Glove', 'Progressive Glove']],

View File

@@ -4,7 +4,7 @@ from test.inverted.TestInverted import TestInverted
class TestInvertedDeathMountain(TestInverted):
def testWestDeathMountain(self):
self.run_tests([
self.run_location_tests([
["Old Man", False, []],
["Old Man", False, [], ['Progressive Glove', 'Flute']],
["Old Man", False, [], ['Lamp']],
@@ -23,7 +23,7 @@ class TestInvertedDeathMountain(TestInverted):
])
def testEastDeathMountain(self):
self.run_tests([
self.run_location_tests([
["Spiral Cave", False, []],
["Spiral Cave", False, [], ['Moon Pearl']],
["Spiral Cave", False, [], ['Progressive Glove', 'Flute']],
@@ -158,7 +158,7 @@ class TestInvertedDeathMountain(TestInverted):
])
def testEastDarkWorldDeathMountain(self):
self.run_tests([
self.run_location_tests([
["Superbunny Cave - Top", False, []],
["Superbunny Cave - Top", False, [], ['Progressive Glove', 'Flute']],
["Superbunny Cave - Top", True, ['Progressive Glove', 'Lamp']],
@@ -204,18 +204,19 @@ class TestInvertedDeathMountain(TestInverted):
])
def testWestDarkWorldDeathMountain(self):
self.run_tests([
self.run_location_tests([
["Spike Cave", False, []],
["Spike Cave", False, [], ['Progressive Glove']],
["Spike Cave", False, [], ['Hammer']],
["Spike Cave", False, [], ['Cape', 'Cane of Byrna']],
["Spike Cave", False, [], ['Cane of Byrna', 'AnyBottle', 'Magic Upgrade (1/2)']],
["Spike Cave", False, [], ['AnyBottle', 'Magic Upgrade (1/2)', 'Pegasus Boots', 'Boss Heart Container', 'Piece of Heart', 'Sanctuary Heart Container']],
["Spike Cave", False, ['Bottle', 'Hammer', 'Progressive Glove', 'Lamp', 'Cape']],
["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Lamp', 'Moon Pearl', 'Cape']],
["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Lamp', 'Cape']],
# Change from base ER - this fork places a blue potion in dark world
#["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Lamp', 'Moon Pearl', 'Cape']],
["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Flute', 'Moon Pearl', 'Cape']],
["Spike Cave", False, ['Bottle', 'Hammer', 'Progressive Glove', 'Lamp', 'Cane of Byrna']],
["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Lamp', 'Moon Pearl', 'Cane of Byrna']],
["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Lamp', 'Cane of Byrna']],
#["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Lamp', 'Moon Pearl', 'Cane of Byrna']],
["Spike Cave", True, ['Bottle', 'Hammer', 'Progressive Glove', 'Flute', 'Moon Pearl', 'Cane of Byrna']],
["Spike Cave", True, ['Magic Upgrade (1/2)', 'Hammer', 'Progressive Glove', 'Lamp', 'Cape']],
["Spike Cave", True, ['Magic Upgrade (1/2)', 'Hammer', 'Progressive Glove', 'Flute', 'Moon Pearl', 'Cape']],

View File

@@ -0,0 +1,118 @@
from test.inverted.TestInverted import TestInverted
class TestEntrances(TestInverted):
def testDungeonEntrances(self):
self.run_entrance_tests([
["Hyrule Castle Entrance (South)", False, []],
["Hyrule Castle Entrance (South)", False, [], ["Beat Agahnim 1", "Moon Pearl"]],
["Hyrule Castle Entrance (South)", False, [], ["Beat Agahnim 1", "Progressive Glove"]],
["Hyrule Castle Entrance (South)", False, ["Progressive Glove"], ["Beat Agahnim 1", "Hammer", "Progressive Glove"]],
["Hyrule Castle Entrance (South)", True, ["Beat Agahnim 1"]],
["Hyrule Castle Entrance (South)", True, ["Moon Pearl", "Hammer", "Progressive Glove"]],
["Hyrule Castle Entrance (South)", True, ["Moon Pearl", "Progressive Glove", "Progressive Glove"]],
["Eastern Palace", False, []],
["Eastern Palace", False, [], ["Beat Agahnim 1", "Moon Pearl"]],
["Eastern Palace", False, [], ["Beat Agahnim 1", "Progressive Glove"]],
["Eastern Palace", False, ["Progressive Glove"], ["Beat Agahnim 1", "Hammer", "Progressive Glove"]],
["Eastern Palace", True, ["Beat Agahnim 1"]],
["Eastern Palace", True, ["Moon Pearl", "Hammer", "Progressive Glove"]],
["Eastern Palace", True, ["Moon Pearl", "Progressive Glove", "Progressive Glove"]],
["Desert Palace Entrance (South)", False, []],
["Desert Palace Entrance (South)", False, [], ["Book of Mudora"]],
["Desert Palace Entrance (South)", False, [], ["Beat Agahnim 1", "Moon Pearl"]],
["Desert Palace Entrance (South)", False, [], ["Beat Agahnim 1", "Progressive Glove"]],
["Desert Palace Entrance (South)", False, ["Progressive Glove"], ["Beat Agahnim 1", "Hammer", "Progressive Glove"]],
["Desert Palace Entrance (South)", True, ["Book of Mudora", "Beat Agahnim 1"]],
["Desert Palace Entrance (South)", True, ["Book of Mudora", "Moon Pearl", "Hammer", "Progressive Glove"]],
["Desert Palace Entrance (South)", True, ["Book of Mudora", "Moon Pearl", "Progressive Glove", "Progressive Glove"]],
["Desert Palace Entrance (North)", False, []],
["Desert Palace Entrance (North)", False, [], ["Book of Mudora"]],
["Desert Palace Entrance (North)", False, [], ["Progressive Glove"]],
["Desert Palace Entrance (North)", False, [], ["Moon Pearl"]],
["Desert Palace Entrance (North)", False, ["Progressive Glove"], ["Beat Agahnim 1", "Hammer", "Progressive Glove"]],
["Desert Palace Entrance (North)", True, ["Moon Pearl", "Book of Mudora", "Progressive Glove", "Hammer"]],
["Desert Palace Entrance (North)", True, ["Moon Pearl", "Book of Mudora", "Progressive Glove", "Progressive Glove"]],
["Desert Palace Entrance (North)", True, ["Moon Pearl", "Book of Mudora", "Progressive Glove", "Beat Agahnim 1"]],
["Tower of Hera", False, []],
["Tower of Hera", False, [], ["Moon Pearl"]],
["Tower of Hera", False, [], ["Hammer"]],
["Tower of Hera", False, ["Progressive Glove"], ["Hookshot", "Progressive Glove"]],
["Tower of Hera", False, [], ["Flute", "Lamp"]],
["Tower of Hera", False, [], ["Flute", "Progressive Glove"]],
["Tower of Hera", True, ["Moon Pearl", "Hammer", "Progressive Glove", "Progressive Glove", "Lamp"]],
["Tower of Hera", True, ["Moon Pearl", "Hammer", "Hookshot", "Progressive Glove", "Lamp"]],
["Tower of Hera", True, ["Moon Pearl", "Hammer", "Hookshot", "Progressive Glove", "Flute"]],
["Tower of Hera", True, ["Moon Pearl", "Hammer", "Beat Agahnim 1", "Flute", "Hookshot"]],
["Inverted Agahnims Tower", False, []],
["Inverted Agahnims Tower", False, [], ["Flute", "Lamp"]],
["Inverted Agahnims Tower", False, [], ["Flute", "Progressive Glove"]],
["Inverted Agahnims Tower", False, [], ["Moon Pearl", "Lamp"]],
["Inverted Agahnims Tower", False, [], ["Moon Pearl", "Progressive Glove"]],
["Inverted Agahnims Tower", True, ["Lamp", "Progressive Glove"]],
["Inverted Agahnims Tower", True, ["Flute", "Beat Agahnim 1", "Moon Pearl"]],
["Inverted Agahnims Tower", True, ["Flute", "Progressive Glove", "Progressive Glove", "Moon Pearl"]],
["Inverted Agahnims Tower", True, ["Flute", "Progressive Glove", "Hammer", "Moon Pearl"]],
["Palace of Darkness", False, []],
["Palace of Darkness", False, [], ["Hammer", "Flippers", "Magic Mirror", "Flute"]],
["Palace of Darkness", True, ["Hammer"]],
["Palace of Darkness", True, ["Flippers"]],
["Palace of Darkness", True, ["Progressive Glove", "Progressive Glove", "Moon Pearl", "Flute"]],
["Palace of Darkness", True, ["Progressive Glove", "Progressive Glove", "Moon Pearl", "Magic Mirror"]],
["Palace of Darkness", True, ["Beat Agahnim 1", "Moon Pearl", "Flute"]],
["Palace of Darkness", True, ["Beat Agahnim 1", "Moon Pearl", "Magic Mirror"]],
["Swamp Palace", True, []],
["Thieves Town", True, []],
["Skull Woods First Section Door", True, []],
["Skull Woods Final Section", False, []],
["Skull Woods Final Section", False, [], ["Fire Rod"]],
["Skull Woods Final Section", True, ["Fire Rod"]],
["Ice Palace", False, []],
["Ice Palace", False, [], ["Flippers"]],
["Ice Palace", True, ["Flippers"]],
["Misery Mire", False, []],
["Misery Mire", False, [], ["Flute", "Magic Mirror"]],
["Misery Mire", False, [], ["Moon Pearl", "Magic Mirror"]],
["Misery Mire", False, [], ["Ether"]],
["Misery Mire", False, [], ["Progressive Sword"]],
["Misery Mire", True, ["Progressive Sword", "Ether", "Beat Agahnim 1", "Magic Mirror"]],
["Misery Mire", True, ["Progressive Sword", "Ether", "Beat Agahnim 1", "Moon Pearl", "Flute"]],
["Misery Mire", True, ["Progressive Sword", "Ether", "Moon Pearl", "Hammer", "Progressive Glove", "Magic Mirror"]],
["Misery Mire", True, ["Progressive Sword", "Ether", "Moon Pearl", "Hammer", "Progressive Glove", "Flute"]],
["Misery Mire", True, ["Progressive Sword", "Ether", "Moon Pearl", "Progressive Glove", "Progressive Glove", "Magic Mirror"]],
["Misery Mire", True, ["Progressive Sword", "Ether", "Moon Pearl", "Progressive Glove", "Progressive Glove", "Flute"]],
["Turtle Rock", False, []],
["Turtle Rock", False, [], ["Quake"]],
["Turtle Rock", False, [], ["Progressive Sword"]],
["Turtle Rock", False, [], ["Lamp", "Flute"]],
["Turtle Rock", False, [], ["Progressive Glove", "Flute"]],
["Turtle Rock", True, ["Quake", "Progressive Sword", "Progressive Glove", "Lamp"]],
["Turtle Rock", True, ["Quake", "Progressive Sword", "Progressive Glove", "Progressive Glove", "Moon Pearl", "Flute"]],
["Turtle Rock", True, ["Quake", "Progressive Sword", "Progressive Glove", "Hammer", "Moon Pearl", "Flute"]],
["Turtle Rock", True, ["Quake", "Progressive Sword", "Beat Agahnim 1", "Moon Pearl", "Flute"]],
["Inverted Ganons Tower", False, []],
["Inverted Ganons Tower", False, [], ["Crystal 1"]],
["Inverted Ganons Tower", False, [], ["Crystal 2"]],
["Inverted Ganons Tower", False, [], ["Crystal 3"]],
["Inverted Ganons Tower", False, [], ["Crystal 4"]],
["Inverted Ganons Tower", False, [], ["Crystal 5"]],
["Inverted Ganons Tower", False, [], ["Crystal 6"]],
["Inverted Ganons Tower", False, [], ["Crystal 7"]],
["Inverted Ganons Tower", True, ["Beat Agahnim 1", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]],
["Inverted Ganons Tower", True, ["Moon Pearl", "Progressive Glove", "Progressive Glove", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]],
["Inverted Ganons Tower", True, ["Moon Pearl", "Hammer", "Progressive Glove", "Progressive Glove", "Crystal 1", "Crystal 2", "Crystal 3", "Crystal 4", "Crystal 5", "Crystal 6", "Crystal 7"]],
])

View File

@@ -6,14 +6,12 @@ class TestInvertedLightWorld(TestInverted):
super().setUp()
def testLostWoods(self):
self.run_tests([
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']],
# @todo: Can get this without moon pearl
# ["Master Sword Pedestal", True, ['Green Pendant', 'Red Pendant', 'Blue Pendant', 'Beat Agahnim 1']],
["Master Sword Pedestal", True, ['Green Pendant', 'Red Pendant', 'Blue Pendant', 'Beat Agahnim 1', 'Moon Pearl']],
["Master Sword Pedestal", True, ['Green Pendant', 'Red Pendant', 'Blue Pendant', 'Beat Agahnim 1']],
["Master Sword Pedestal", True, ['Green Pendant', 'Red Pendant', 'Blue Pendant', 'Moon Pearl', 'Progressive Glove', 'Hammer']],
["Master Sword Pedestal", True, ['Green Pendant', 'Red Pendant', 'Blue Pendant', 'Moon Pearl', 'Progressive Glove', 'Progressive Glove']],
@@ -37,7 +35,7 @@ class TestInvertedLightWorld(TestInverted):
])
def testKakariko(self):
self.run_tests([
self.run_location_tests([
["Kakariko Tavern", False, []],
["Kakariko Tavern", False, [], ['Moon Pearl']],
["Kakariko Tavern", True, ['Moon Pearl', 'Beat Agahnim 1']],
@@ -111,9 +109,7 @@ class TestInvertedLightWorld(TestInverted):
["Blind's Hideout - Far Right", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']],
["Bottle Merchant", False, []],
#@todo: Can get this without moon pearl
#["Bottle Merchant", True, ['Beat Agahnim 1']],
["Bottle Merchant", True, ['Beat Agahnim 1', 'Moon Pearl']],
["Bottle Merchant", True, ['Beat Agahnim 1']],
["Bottle Merchant", True, ['Moon Pearl', 'Progressive Glove', 'Hammer']],
["Bottle Merchant", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']],
@@ -171,7 +167,7 @@ class TestInvertedLightWorld(TestInverted):
])
def testSouthLightWorld(self):
self.run_tests([
self.run_location_tests([
["Desert Ledge", False, []],
["Desert Ledge", False, [], ['Book of Mudora']],
["Desert Ledge", False, [], ['Moon Pearl']],
@@ -251,7 +247,7 @@ class TestInvertedLightWorld(TestInverted):
])
def testZoraArea(self):
self.run_tests([
self.run_location_tests([
["King Zora", False, []],
["King Zora", False, [], ['Progressive Glove', 'Flippers']],
["King Zora", False, [], ['Moon Pearl']],
@@ -284,7 +280,7 @@ class TestInvertedLightWorld(TestInverted):
])
def testLightWorld(self):
self.run_tests([
self.run_location_tests([
["Link's Uncle", False, []],
["Link's Uncle", False, [], ['Moon Pearl']],
["Link's Uncle", True, ['Moon Pearl', 'Beat Agahnim 1']],

View File

@@ -4,7 +4,7 @@ from test.inverted.TestInverted import TestInverted
class TestInvertedTurtleRock(TestInverted):
def testTurtleRock(self):
self.run_tests([
self.run_location_tests([
["Turtle Rock - Compass Chest", False, []],
["Turtle Rock - Compass Chest", False, [], ['Cane of Somaria']],
["Turtle Rock - Compass Chest", False, [], ['Quake', 'Magic Mirror']],