From bed3397a3acb42104cbf085455954313178d8433 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 3 Sep 2025 21:51:34 -0400 Subject: Added option for Daedalus roof access logic --- apworld/__init__.py | 1 + apworld/options.py | 11 +++++++++++ apworld/regions.py | 3 +++ 3 files changed, 15 insertions(+) (limited to 'apworld') diff --git a/apworld/__init__.py b/apworld/__init__.py index 1f1e6fe..7ebdf56 100644 --- a/apworld/__init__.py +++ b/apworld/__init__.py @@ -65,6 +65,7 @@ class Lingo2World(World): def fill_slot_data(self): slot_options = [ + "daedalus_roof_access", "keyholder_sanity", "shuffle_doors", "victory_condition", diff --git a/apworld/options.py b/apworld/options.py index dacbc46..3216dff 100644 --- a/apworld/options.py +++ b/apworld/options.py @@ -17,6 +17,16 @@ class KeyholderSanity(Toggle): display_name = "Keyholder Sanity" +class DaedalusRoofAccess(Toggle): + """ + If enabled, the player will be logically expected to be able to go from the castle entrance to any part of Daedalus + that is open to the air. If disabled, the player will only be expected to be able to enter the castle, the moat, + Icarus, and the area at the bottom of the stairs. Invisible walls that become opaque as you approach them are added + to the level to prevent the player from accidentally breaking logic. + """ + display_name = "Allow Daedalus Roof Access" + + class VictoryCondition(Choice): """Victory condition.""" display_name = "Victory Condition" @@ -39,4 +49,5 @@ class VictoryCondition(Choice): class Lingo2Options(PerGameCommonOptions): shuffle_doors: ShuffleDoors keyholder_sanity: KeyholderSanity + daedalus_roof_access: DaedalusRoofAccess victory_condition: VictoryCondition diff --git a/apworld/regions.py b/apworld/regions.py index fe2c99b..e30493c 100644 --- a/apworld/regions.py +++ b/apworld/regions.py @@ -41,6 +41,9 @@ def create_regions(world: "Lingo2World"): # TODO: The requirements of the opposite trigger also matter. for connection in world.static_logic.objects.connections: + if connection.roof_access and not world.options.daedalus_roof_access: + continue + from_region = world.static_logic.get_room_region_name(connection.from_room) to_region = world.static_logic.get_room_region_name(connection.to_room) connection_name = f"{from_region} -> {to_region}" -- cgit 1.4.1