diff options
Diffstat (limited to 'apworld')
| -rw-r--r-- | apworld/__init__.py | 1 | ||||
| -rw-r--r-- | apworld/options.py | 11 | ||||
| -rw-r--r-- | apworld/regions.py | 3 |
3 files changed, 15 insertions, 0 deletions
| 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): | |||
| 65 | 65 | ||
| 66 | def fill_slot_data(self): | 66 | def fill_slot_data(self): |
| 67 | slot_options = [ | 67 | slot_options = [ |
| 68 | "daedalus_roof_access", | ||
| 68 | "keyholder_sanity", | 69 | "keyholder_sanity", |
| 69 | "shuffle_doors", | 70 | "shuffle_doors", |
| 70 | "victory_condition", | 71 | "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): | |||
| 17 | display_name = "Keyholder Sanity" | 17 | display_name = "Keyholder Sanity" |
| 18 | 18 | ||
| 19 | 19 | ||
| 20 | class DaedalusRoofAccess(Toggle): | ||
| 21 | """ | ||
| 22 | If enabled, the player will be logically expected to be able to go from the castle entrance to any part of Daedalus | ||
| 23 | that is open to the air. If disabled, the player will only be expected to be able to enter the castle, the moat, | ||
| 24 | Icarus, and the area at the bottom of the stairs. Invisible walls that become opaque as you approach them are added | ||
| 25 | to the level to prevent the player from accidentally breaking logic. | ||
| 26 | """ | ||
| 27 | display_name = "Allow Daedalus Roof Access" | ||
| 28 | |||
| 29 | |||
| 20 | class VictoryCondition(Choice): | 30 | class VictoryCondition(Choice): |
| 21 | """Victory condition.""" | 31 | """Victory condition.""" |
| 22 | display_name = "Victory Condition" | 32 | display_name = "Victory Condition" |
| @@ -39,4 +49,5 @@ class VictoryCondition(Choice): | |||
| 39 | class Lingo2Options(PerGameCommonOptions): | 49 | class Lingo2Options(PerGameCommonOptions): |
| 40 | shuffle_doors: ShuffleDoors | 50 | shuffle_doors: ShuffleDoors |
| 41 | keyholder_sanity: KeyholderSanity | 51 | keyholder_sanity: KeyholderSanity |
| 52 | daedalus_roof_access: DaedalusRoofAccess | ||
| 42 | victory_condition: VictoryCondition | 53 | 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"): | |||
| 41 | 41 | ||
| 42 | # TODO: The requirements of the opposite trigger also matter. | 42 | # TODO: The requirements of the opposite trigger also matter. |
| 43 | for connection in world.static_logic.objects.connections: | 43 | for connection in world.static_logic.objects.connections: |
| 44 | if connection.roof_access and not world.options.daedalus_roof_access: | ||
| 45 | continue | ||
| 46 | |||
| 44 | from_region = world.static_logic.get_room_region_name(connection.from_room) | 47 | from_region = world.static_logic.get_room_region_name(connection.from_room) |
| 45 | to_region = world.static_logic.get_room_region_name(connection.to_room) | 48 | to_region = world.static_logic.get_room_region_name(connection.to_room) |
| 46 | connection_name = f"{from_region} -> {to_region}" | 49 | connection_name = f"{from_region} -> {to_region}" |
