diff --git a/Rules.py b/Rules.py index 06953125..cd6b7884 100644 --- a/Rules.py +++ b/Rules.py @@ -38,7 +38,7 @@ def set_rules(world, player): open_rules(world, player) inverted_rules(world, player) else: - raise NotImplementedError('Not implemented yet') + raise NotImplementedError(f'World state {world.mode[player]} is not implemented yet') if world.logic[player] == 'noglitches': no_glitches_rules(world, player) @@ -433,6 +433,7 @@ def global_rules(world, player): def default_rules(world, player): + """Default world rules when world state is not inverted.""" # overworld requirements set_rule(world.get_entrance('Kings Grave', player), lambda state: state.has_Boots(player)) set_rule(world.get_entrance('Kings Grave Outer Rocks', player), lambda state: state.can_lift_heavy_rocks(player)) @@ -504,7 +505,7 @@ def default_rules(world, player): set_rule(world.get_entrance('East Dark World Bridge', player), lambda state: state.has_Pearl(player) and state.has('Hammer', player)) set_rule(world.get_entrance('Lake Hylia Island Mirror Spot', player), lambda state: state.has_Pearl(player) and state.has_Mirror(player) and state.has('Flippers', player)) set_rule(world.get_entrance('Lake Hylia Central Island Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('East Dark World River Pier', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) # ToDo any fake flipper set up? + set_rule(world.get_entrance('East Dark World River Pier', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) set_rule(world.get_entrance('Graveyard Ledge Mirror Spot', player), lambda state: state.has_Pearl(player) and state.has_Mirror(player)) set_rule(world.get_entrance('Bumper Cave Entrance Rock', player), lambda state: state.has_Pearl(player) and state.can_lift_rocks(player)) set_rule(world.get_entrance('Bumper Cave Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) @@ -630,7 +631,7 @@ def inverted_rules(world, player): set_rule(world.get_entrance('Village of Outcasts Heavy Rock', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('East Dark World Bridge', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Lake Hylia Central Island Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('East Dark World River Pier', player), lambda state: state.has('Flippers', player)) # ToDo any fake flipper set up? (Qirn Jump) + set_rule(world.get_entrance('East Dark World River Pier', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Bumper Cave Entrance Rock', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Bumper Cave Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Hammer Peg Area Mirror Spot', player), lambda state: state.has_Mirror(player)) @@ -694,14 +695,8 @@ def inverted_rules(world, player): swordless_rules(world, player) def no_glitches_rules(world, player): - if world.mode[player] != 'inverted': - set_rule(world.get_entrance('Zoras River', player), lambda state: state.has('Flippers', player) or state.can_lift_rocks(player)) - set_rule(world.get_entrance('Lake Hylia Central Island Pier', player), lambda state: state.has('Flippers', player)) # can be fake flippered to - set_rule(world.get_entrance('Hobo Bridge', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Dark Lake Hylia Drop (East)', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Dark Lake Hylia Teleporter', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Dark Lake Hylia Ledge Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - else: + """""" + if world.mode[player] == 'inverted': set_rule(world.get_entrance('Zoras River', player), lambda state: state.has_Pearl(player) and (state.has('Flippers', player) or state.can_lift_rocks(player))) set_rule(world.get_entrance('Lake Hylia Central Island Pier', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) # can be fake flippered to set_rule(world.get_entrance('Lake Hylia Island Pier', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) # can be fake flippered to @@ -712,6 +707,13 @@ def no_glitches_rules(world, player): set_rule(world.get_entrance('Dark Lake Hylia Teleporter', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Dark Lake Hylia Ledge Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('East Dark World Pier', player), lambda state: state.has('Flippers', player)) + else: + set_rule(world.get_entrance('Zoras River', player), lambda state: state.has('Flippers', player) or state.can_lift_rocks(player)) + set_rule(world.get_entrance('Lake Hylia Central Island Pier', player), lambda state: state.has('Flippers', player)) # can be fake flippered to + set_rule(world.get_entrance('Hobo Bridge', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Dark Lake Hylia Drop (East)', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) + set_rule(world.get_entrance('Dark Lake Hylia Teleporter', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) + set_rule(world.get_entrance('Dark Lake Hylia Ledge Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) add_rule(world.get_entrance('Ganons Tower (Double Switch Room)', player), lambda state: state.has('Hookshot', player)) set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: False) # no glitches does not require block override @@ -719,14 +721,7 @@ def no_glitches_rules(world, player): add_conditional_lamps(world, player) def fake_flipper_rules(world, player): - if world.mode[player] != 'inverted': - set_rule(world.get_entrance('Zoras River', player), lambda state: True) - set_rule(world.get_entrance('Lake Hylia Central Island Pier', player), lambda state: True) - set_rule(world.get_entrance('Hobo Bridge', player), lambda state: True) - set_rule(world.get_entrance('Dark Lake Hylia Drop (East)', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Dark Lake Hylia Teleporter', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Dark Lake Hylia Ledge Drop', player), lambda state: state.has_Pearl(player)) - else: + if world.mode[player] == 'inverted': set_rule(world.get_entrance('Zoras River', player), lambda state: state.has_Pearl(player)) set_rule(world.get_entrance('Lake Hylia Central Island Pier', player), lambda state: state.has_Pearl(player)) set_rule(world.get_entrance('Lake Hylia Island Pier', player), lambda state: state.has_Pearl(player)) @@ -737,6 +732,17 @@ def fake_flipper_rules(world, player): set_rule(world.get_entrance('Dark Lake Hylia Teleporter', player), lambda state: True) set_rule(world.get_entrance('Dark Lake Hylia Ledge Drop', player), lambda state: True) set_rule(world.get_entrance('East Dark World Pier', player), lambda state: True) + #qirn jump + set_rule(world.get_entrance('East Dark World River Pier', player), lambda state: True) + else: + set_rule(world.get_entrance('Zoras River', player), lambda state: True) + set_rule(world.get_entrance('Lake Hylia Central Island Pier', player), lambda state: True) + set_rule(world.get_entrance('Hobo Bridge', player), lambda state: True) + set_rule(world.get_entrance('Dark Lake Hylia Drop (East)', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) + set_rule(world.get_entrance('Dark Lake Hylia Teleporter', player), lambda state: state.has_Pearl(player)) + set_rule(world.get_entrance('Dark Lake Hylia Ledge Drop', player), lambda state: state.has_Pearl(player)) + #qirn jump + set_rule(world.get_entrance('East Dark World River Pier', player), lambda state: state.has_Pearl(player)) def forbid_bomb_jump_requirements(world, player): diff --git a/test/inverted_owg/TestDarkWorld.py b/test/inverted_owg/TestDarkWorld.py index a585b80a..753f7d65 100644 --- a/test/inverted_owg/TestDarkWorld.py +++ b/test/inverted_owg/TestDarkWorld.py @@ -49,11 +49,7 @@ class TestDarkWorld(TestInvertedOWG): ["Catfish", False, []], ["Catfish", True, ['Pegasus Boots']], - #todo: Qirn Jump - #["Pyramid", True, []], - ["Pyramid", False, []], - ["Pyramid", True, ['Pegasus Boots']], - ["Pyramid", True, ['Flippers']], + ["Pyramid", True, []], ["Pyramid Fairy - Left", False, []], ["Pyramid Fairy - Left", False, [], ['Magic Mirror']], diff --git a/test/inverted_owg/TestDungeons.py b/test/inverted_owg/TestDungeons.py index 33a50450..abd9d193 100644 --- a/test/inverted_owg/TestDungeons.py +++ b/test/inverted_owg/TestDungeons.py @@ -48,11 +48,8 @@ class TestDungeons(TestInvertedOWG): ["Castle Tower - Room 03", True, ['Pegasus Boots', 'Progressive Sword']], ["Castle Tower - Room 03", True, ['Pegasus Boots', 'Progressive Bow']], - #todo: Qirn Jump - #["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']], + # Qirn Jump + ["Palace of Darkness - Shooter Room", True, []], ["Swamp Palace - Entrance", False, []], ["Swamp Palace - Entrance", False, [], ['Magic Mirror']], @@ -76,11 +73,9 @@ class TestDungeons(TestInvertedOWG): ["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', 'Fire Rod']], - ["Ice Palace - Compass Chest", True, ['Pegasus Boots', 'Bombos', 'Progressive Sword']], + # Qirn Jump + ["Ice Palace - Compass Chest", True, ['Fire Rod']], + ["Ice Palace - Compass Chest", True, ['Bombos', 'Progressive Sword']], ["Misery Mire - Bridge Chest", False, []], ["Misery Mire - Bridge Chest", False, [], ['Ether']], diff --git a/test/owg/TestDungeons.py b/test/owg/TestDungeons.py index f89a292c..cb4dc075 100644 --- a/test/owg/TestDungeons.py +++ b/test/owg/TestDungeons.py @@ -50,9 +50,8 @@ class TestDungeons(TestVanillaOWG): ["Palace of Darkness - Shooter Room", True, ['Moon Pearl', 'Pegasus Boots']], ["Palace of Darkness - Shooter Room", True, ['Moon Pearl', 'Beat Agahnim 1']], ["Palace of Darkness - Shooter Room", True, ['Moon Pearl', 'Hammer', 'Progressive Glove']], - #todo: Qirn jump in logic? - #["Palace of Darkness - Shooter Room", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], - ["Palace of Darkness - Shooter Room", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove', 'Flippers']], + + ["Palace of Darkness - Shooter Room", True, ['Moon Pearl', 'Progressive Glove', 'Progressive Glove']], ["Swamp Palace - Entrance", False, []], ["Swamp Palace - Entrance", False, [], ['Magic Mirror']],