From bf78758ade9d73e1f6e13e98b3e73339630fd357 Mon Sep 17 00:00:00 2001 From: StructuralMike <66819228+StructuralMike@users.noreply.github.com> Date: Sat, 6 Mar 2021 19:38:12 +0100 Subject: [PATCH] Tower of Hera crystal regions working --- DoorShuffle.py | 4 ++++ Doors.py | 6 ++++++ Dungeons.py | 2 +- Regions.py | 10 ++++++---- Rules.py | 16 ++++++++-------- 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/DoorShuffle.py b/DoorShuffle.py index 42585edf..37dfa28c 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -1989,6 +1989,10 @@ logical_connections = [ ('Hera Lobby to Front Barrier - Blue', 'Hera Front'), ('Hera Front to Lobby Barrier - Blue', 'Hera Lobby'), + ('Hera Lobby to Crystal', 'Hera Lobby Crystal'), + ('Hera Lobby Crystal Exit', 'Hera Lobby'), + ('Hera Front to Crystal', 'Hera Front Crystal'), + ('Hera Front Crystal Exit', 'Hera Front'), ('Hera Front to Down Stairs Barrier - Blue', 'Hera Down Stairs Landing'), ('Hera Front to Up Stairs Barrier - Orange', 'Hera Up Stairs Landing'), ('Hera Front to Back Barrier - Orange', 'Hera Back'), diff --git a/Doors.py b/Doors.py index 1d55c9de..332bd208 100644 --- a/Doors.py +++ b/Doors.py @@ -253,7 +253,11 @@ def create_doors(world, player): # Hera create_door(player, 'Hera Lobby S', Nrml).dir(So, 0x77, Mid, Low).pos(0).portal(Z, 0x22, 1), create_door(player, 'Hera Lobby to Front Barrier - Blue', Lgcl), + create_door(player, 'Hera Lobby - Crystal', Lgcl), + create_door(player, 'Hera Lobby - Crystal Exit', Lgcl), create_door(player, 'Hera Front to Lobby Barrier - Blue', Lgcl), + create_door(player, 'Hera Front - Crystal', Lgcl), + create_door(player, 'Hera Front - Crystal Exit', Lgcl), create_door(player, 'Hera Front to Down Stairs Barrier - Blue', Lgcl), create_door(player, 'Hera Down Stairs to Front Barrier - Blue', Lgcl), create_door(player, 'Hera Front to Up Stairs Barrier - Orange', Lgcl), @@ -1138,8 +1142,10 @@ def create_doors(world, player): world.get_door('Hyrule Castle Tapestry Backwards', player).event('Zelda Pickup') # crystal switches and barriers + world.get_door('Hera Lobby - Crystal Exit', player).c_switch() world.get_door('Hera Lobby to Front Barrier - Blue', player).barrier(CrystalBarrier.Blue) world.get_door('Hera Front to Lobby Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('Hera Front - Crystal Exit', player).c_switch() world.get_door('Hera Front to Down Stairs Barrier - Blue', player).barrier(CrystalBarrier.Blue) world.get_door('Hera Down Stairs to Front Barrier - Blue', player).barrier(CrystalBarrier.Blue) world.get_door('Hera Front to Up Stairs Barrier - Orange', player).barrier(CrystalBarrier.Orange) diff --git a/Dungeons.py b/Dungeons.py index 1ec4d6cb..275bbf98 100644 --- a/Dungeons.py +++ b/Dungeons.py @@ -195,7 +195,7 @@ desert_regions = [ ] hera_regions = [ - 'Hera Lobby', 'Hera Front', 'Hera Back', 'Hera Down Stairs Landing', 'Hera Up Stairs Landing', + 'Hera Lobby', 'Hera Lobby Crystal', 'Hera Front', 'Hera Back', 'Hera Front Crystal', 'Hera Down Stairs Landing', 'Hera Up Stairs Landing', 'Hera Basement Cage', 'Hera Tile Room', 'Hera Tridorm', 'Hera Torches', 'Hera Beetles', 'Hera Startile Corner', 'Hera Startile Wide', 'Hera 4F', 'Hera Big Chest Landing', 'Hera 5F', 'Hera Fairies', 'Hera Boss', 'Hera Portal' diff --git a/Regions.py b/Regions.py index 1f202779..95a1051c 100644 --- a/Regions.py +++ b/Regions.py @@ -338,8 +338,10 @@ def create_dungeon_regions(world, player): create_dungeon_region(player, 'Desert Boss', 'Desert Palace', ['Desert Palace - Boss', 'Desert Palace - Prize'], ['Desert Boss SW']), # Hera - create_dungeon_region(player, 'Hera Lobby', 'Tower of Hera', None, ['Hera Lobby S', 'Hera Lobby to Front Barrier - Blue']), - create_dungeon_region(player, 'Hera Front', 'Tower of Hera', None, ['Hera Front to Lobby Barrier - Blue', 'Hera Front to Down Stairs Barrier - Blue', 'Hera Front to Up Stairs Barrier - Orange', 'Hera Front to Back Barrier - Orange']), + create_dungeon_region(player, 'Hera Lobby', 'Tower of Hera', None, ['Hera Lobby S', 'Hera Lobby to Crystal', 'Hera Lobby to Front Barrier - Blue']), + create_dungeon_region(player, 'Hera Lobby Crystal', 'Tower of Hera', None, ['Hera Lobby Crystal Exit']), + create_dungeon_region(player, 'Hera Front', 'Tower of Hera', None, ['Hera Front to Crystal', 'Hera Front to Lobby Barrier - Blue', 'Hera Front to Down Stairs Barrier - Blue', 'Hera Front to Up Stairs Barrier - Orange', 'Hera Front to Back Barrier - Orange']), + create_dungeon_region(player, 'Hera Front Crystal', 'Tower of Hera', None, ['Hera Front Crystal Exit']), create_dungeon_region(player, 'Hera Down Stairs Landing', 'Tower of Hera', None, ['Hera Lobby Down Stairs', 'Hera Down Stairs to Front Barrier - Blue']), create_dungeon_region(player, 'Hera Up Stairs Landing', 'Tower of Hera', None, ['Hera Up Stairs to Front Barrier - Orange', 'Hera Lobby Up Stairs']), create_dungeon_region(player, 'Hera Back', 'Tower of Hera', ['Tower of Hera - Map Chest'], ['Hera Back to Front Barrier - Orange', 'Hera Lobby Key Stairs']), @@ -759,8 +761,8 @@ def create_dungeon_regions(world, player): ] world.initialize_regions() - world.get_region('Hera Lobby', player).crystal_switch = True - world.get_region('Hera Front', player).crystal_switch = True + world.get_region('Hera Lobby Crystal', player).crystal_switch = True + world.get_region('Hera Front Crystal', player).crystal_switch = True world.get_region('Hera Basement Cage', player).crystal_switch = True world.get_region('Hera Tile Room', player).crystal_switch = True # INTERIOR not accessible (maybe with cane) world.get_region('Hera Tridorm', player).crystal_switch = True diff --git a/Rules.py b/Rules.py index bf7e868f..4f9bd3fb 100644 --- a/Rules.py +++ b/Rules.py @@ -349,14 +349,14 @@ def global_rules(world, player): else: set_rule(world.get_entrance('Thieves Attic ES', player), lambda state: state.can_reach_orange(world.get_region('Thieves Attic', player), player)) - set_rule(world.get_entrance('Hera Lobby to Front Barrier - Blue', player), lambda state: state.can_hit_switch(player)) - set_rule(world.get_entrance('Hera Front to Lobby Barrier - Blue', player), lambda state: state.can_hit_switch(player)) - set_rule(world.get_entrance('Hera Front to Down Stairs Barrier - Blue', player), lambda state: lambda state: state.can_hit_switch(player)) - set_rule(world.get_entrance('Hera Down Stairs to Front Barrier - Blue', player), lambda state: lambda state: state.can_hit_switch_through_barrier(player) or state.can_reach_blue(world.get_region('Hera Down Stairs Landing', player), player)) - set_rule(world.get_entrance('Hera Front to Up Stairs Barrier - Orange', player), lambda state: lambda state: state.can_hit_switch(player)) - set_rule(world.get_entrance('Hera Up Stairs to Front Barrier - Orange', player), lambda state: lambda state: state.can_hit_switch_through_barrier(player) or state.can_reach_orange(world.get_region('Hera Up Stairs Landing', player), player)) - set_rule(world.get_entrance('Hera Front to Back Barrier - Orange', player), lambda state: lambda state: state.can_hit_switch(player)) - set_rule(world.get_entrance('Hera Back to Front Barrier - Orange', player), lambda state: state.has_beam_sword(player) or state.can_shoot_arrows(player) or state.has('Fire Rod', player) or state.has('Ice Rod', player) or state.has('Cane of Somaria', player) or state.can_reach_orange(world.get_region('Hera Back', player), player)) + set_rule(world.get_entrance('Hera Lobby to Front Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('Hera Lobby', player), player)) + set_rule(world.get_entrance('Hera Front to Lobby Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('Hera Front', player), player)) + set_rule(world.get_entrance('Hera Front to Down Stairs Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('Hera Front', player), player)) + set_rule(world.get_entrance('Hera Down Stairs to Front Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('Hera Down Stairs Landing', player), player)) + set_rule(world.get_entrance('Hera Front to Up Stairs Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('Hera Front', player), player)) + set_rule(world.get_entrance('Hera Up Stairs to Front Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('Hera Up Stairs Landing', player), player)) + set_rule(world.get_entrance('Hera Front to Back Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('Hera Front', player), player)) + set_rule(world.get_entrance('Hera Back to Front Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('Hera Back', player), player)) set_rule(world.get_entrance('PoD Arena Crystal Path', player), lambda state: state.can_reach_blue(world.get_region('PoD Arena Crystal', player), player)) set_rule(world.get_entrance('Swamp Trench 2 Pots Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Swamp Trench 2 Pots', player), player)) set_rule(world.get_entrance('Swamp Shortcut Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Swamp Shortcut', player), player))