Archipelago/test/inverted/TestInvertedBombRules.py

47 lines
3.1 KiB
Python
Raw Normal View History

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, \
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
2020-04-28 15:34:30 +00:00
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 ItemPool import difficulties
from Rules import set_inverted_big_bomb_rules
class TestInvertedBombRules(unittest.TestCase):
def setUp(self):
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
2020-04-28 15:34:30 +00:00
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)
#TODO: Just making sure I haven't missed an entrance. It would be good to test the rules make sense as well.
def testInvertedBombRulesAreComplete(self):
entrances = list(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)
must_exits = list(Inverted_LW_Entrances_Must_Exit + Inverted_LW_Dungeon_Entrances_Must_Exit)
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)
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
2020-04-28 15:34:30 +00:00
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):
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
2020-04-28 15:34:30 +00:00
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)
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)
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
2020-04-28 15:34:30 +00:00
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)
entrance.connected_region = None