From 56072e60940698c5a40fff98f45de276cacbb82d Mon Sep 17 00:00:00 2001 From: codemann8 Date: Tue, 23 Aug 2022 18:39:05 -0500 Subject: [PATCH] Creating a separate copy_world_limited for OWR/ER purposes --- Main.py | 17 ++++++++++------- Rules.py | 15 +++++++-------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/Main.py b/Main.py index 0ebf52db..8288bb52 100644 --- a/Main.py +++ b/Main.py @@ -627,6 +627,7 @@ def copy_world_limited(world): create_dungeon_regions(ret, player) create_owedges(ret, player) create_shops(ret, player) + create_doors(ret, player) create_rooms(ret, player) create_dungeons(ret, player) @@ -658,13 +659,15 @@ def copy_world_limited(world): copiededge = ret.check_for_owedge(edge.name, edge.player) if copiededge is not None: copiededge.dest = ret.check_for_owedge(edge.dest.name, edge.dest.player) - # for door in world.doors: - # entrance = ret.check_for_entrance(door.name, door.player) - # if entrance is not None: - # destdoor = ret.check_for_door(entrance.door.name, entrance.door.player) - # entrance.door = destdoor - # if destdoor is not None: - # destdoor.entrance = entrance + + for door in world.doors: + entrance = ret.check_for_entrance(door.name, door.player) + if entrance is not None: + destdoor = ret.check_for_door(entrance.door.name, entrance.door.player) + entrance.door = destdoor + if destdoor is not None: + destdoor.entrance = entrance + ret.key_logic = world.key_logic.copy() from OverworldShuffle import categorize_world_regions diff --git a/Rules.py b/Rules.py index 260b2893..cc9bead3 100644 --- a/Rules.py +++ b/Rules.py @@ -341,7 +341,7 @@ def global_rules(world, player): set_rule(world.get_location('Ice Palace - Freezor Chest', player), lambda state: state.can_melt_things(player)) set_rule(world.get_entrance('Ice Hookshot Ledge Path', player), lambda state: state.has('Hookshot', player)) set_rule(world.get_entrance('Ice Hookshot Balcony Path', player), lambda state: state.has('Hookshot', player)) - if not world.is_copied_world and not world.get_door('Ice Switch Room SE', player).entranceFlag: + if not world.get_door('Ice Switch Room SE', player).entranceFlag: set_rule(world.get_entrance('Ice Switch Room SE', player), lambda state: state.has('Cane of Somaria', player) or state.has('Convenient Block', player)) set_defeat_dungeon_boss_rule(world.get_location('Ice Palace - Boss', player)) set_defeat_dungeon_boss_rule(world.get_location('Ice Palace - Prize', player)) @@ -398,7 +398,7 @@ def global_rules(world, player): set_rule(world.get_entrance('GT Hope Room EN', player), lambda state: state.has('Cane of Somaria', player)) set_rule(world.get_entrance('GT Conveyor Cross WN', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('GT Conveyor Cross EN', player), lambda state: state.has('Hookshot', player)) - if not world.is_copied_world and not world.get_door('GT Speed Torch SE', player).entranceFlag: + if not world.get_door('GT Speed Torch SE', player).entranceFlag: set_rule(world.get_entrance('GT Speed Torch SE', player), lambda state: state.has('Fire Rod', player)) set_rule(world.get_entrance('GT Hookshot South-Mid Path', player), lambda state: state.has('Hookshot', player)) set_rule(world.get_entrance('GT Hookshot Mid-North Path', player), lambda state: state.has('Hookshot', player)) @@ -421,7 +421,7 @@ def global_rules(world, player): set_rule(world.get_entrance('GT Gauntlet 2 EN', player), lambda state: state.can_kill_most_things(player)) set_rule(world.get_entrance('GT Gauntlet 2 SW', player), lambda state: state.can_kill_most_things(player)) set_rule(world.get_entrance('GT Gauntlet 3 NW', player), lambda state: state.can_kill_most_things(player)) - if not world.is_copied_world and not world.get_door('GT Gauntlet 3 SW', player).entranceFlag: + if not world.get_door('GT Gauntlet 3 SW', player).entranceFlag: set_rule(world.get_entrance('GT Gauntlet 3 SW', player), lambda state: state.can_kill_most_things(player)) set_rule(world.get_entrance('GT Gauntlet 4 NW', player), lambda state: state.can_kill_most_things(player)) set_rule(world.get_entrance('GT Gauntlet 4 SW', player), lambda state: state.can_kill_most_things(player)) @@ -441,11 +441,10 @@ def global_rules(world, player): set_defeat_dungeon_boss_rule(world.get_location('Agahnim 2', player)) # crystal switch rules - if not world.is_copied_world: - if world.get_door('Thieves Attic ES', player).crystal == CrystalBarrier.Blue: - set_rule(world.get_entrance('Thieves Attic ES', player), lambda state: state.can_reach_blue(world.get_region('Thieves Attic', player), player)) - else: - set_rule(world.get_entrance('Thieves Attic ES', player), lambda state: state.can_reach_orange(world.get_region('Thieves Attic', player), player)) + if world.get_door('Thieves Attic ES', player).crystal == CrystalBarrier.Blue: + set_rule(world.get_entrance('Thieves Attic ES', player), lambda state: state.can_reach_blue(world.get_region('Thieves Attic', player), 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('Thieves Attic Orange Barrier', player), lambda state: state.can_reach_orange(world.get_region('Thieves Attic', player), player)) set_rule(world.get_entrance('Thieves Attic Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Thieves Attic', player), player))