From 93415461596b2649aa2ee681c0f0b7f1a16d85e1 Mon Sep 17 00:00:00 2001 From: compiling <8335770+compiling@users.noreply.github.com> Date: Wed, 15 Apr 2020 20:24:18 +1000 Subject: [PATCH 1/2] Set TR key rules last, so that entrance requirements are known. --- Rules.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/Rules.py b/Rules.py index 3c89c949..7c889364 100644 --- a/Rules.py +++ b/Rules.py @@ -66,6 +66,13 @@ def set_rules(world, player): if not world.swamp_patch_required[player]: add_rule(world.get_entrance('Swamp Palace Moat', player), lambda state: state.has_Mirror(player)) + ganons_tower = world.get_entrance('Inverted Ganons Tower' if world.mode[player] == 'inverted' else 'Ganons Tower', player) + set_rule(ganons_tower, lambda state: False) # This is a safety for the TR function below to not require GT entrance in its key logic. + + set_trock_key_rules(world, player) + + set_rule(ganons_tower, lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player)) + if world.mode[player] != 'inverted': set_bunny_rules(world, player) else: @@ -459,15 +466,10 @@ def default_rules(world, player): set_rule(world.get_entrance('Turtle Rock', player), lambda state: state.has_Pearl(player) and state.has_sword(player) and state.has_turtle_rock_medallion(player) and state.can_reach('Turtle Rock (Top)', 'Region', player)) # sword required to cast magic (!) set_rule(world.get_entrance('Pyramid Hole', player), lambda state: state.has('Beat Agahnim 2', player) or world.open_pyramid[player]) - set_rule(world.get_entrance('Ganons Tower', player), lambda state: False) # This is a safety for the TR function below to not require GT entrance in its key logic. if world.swords[player] == 'swordless': swordless_rules(world, player) - set_trock_key_rules(world, player) - - set_rule(world.get_entrance('Ganons Tower', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player)) - def forbid_overworld_glitches(world, player): for exit in OWGSets.get_boots_clip_exits_lw(world.mode[player] == 'inverted'): @@ -627,15 +629,10 @@ def inverted_rules(world, player): set_rule(world.get_entrance('Hammer Peg Area Flute', player), lambda state: state.can_flute(player)) set_rule(world.get_entrance('Inverted Pyramid Hole', player), lambda state: state.has('Beat Agahnim 2', player) or world.open_pyramid[player]) - set_rule(world.get_entrance('Inverted Ganons Tower', player), lambda state: False) # This is a safety for the TR function below to not require GT entrance in its key logic. if world.swords[player] == 'swordless': swordless_rules(world, player) - set_trock_key_rules(world, player) - - set_rule(world.get_entrance('Inverted Ganons Tower', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], 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)) From 5e1df5dc362ae58e7f5a5fb82d2ed71517d3f393 Mon Sep 17 00:00:00 2001 From: compiling <8335770+compiling@users.noreply.github.com> Date: Wed, 15 Apr 2020 21:35:27 +1000 Subject: [PATCH 2/2] Remove mirror clips from Inverted / No Glitches --- Rules.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Rules.py b/Rules.py index 7c889364..0659cbb5 100644 --- a/Rules.py +++ b/Rules.py @@ -481,6 +481,9 @@ def forbid_overworld_glitches(world, player): if world.mode[player] != 'inverted': for exit in OWGSets.get_mirror_clip_spots_dw(): set_rule(world.get_entrance(exit, player), lambda state: False) + else: + for exit in OWGSets.get_mirror_clip_spots_lw(): + set_rule(world.get_entrance(exit, player), lambda state: False) def inverted_rules(world, player):