diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2025-09-03 21:51:34 -0400 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2025-09-03 21:51:34 -0400 |
commit | bed3397a3acb42104cbf085455954313178d8433 (patch) | |
tree | f4cd9f318b578c85e7a23c05896e7505c4c86e4b /apworld | |
parent | c5edb28bd91936ede3c7d31a9d934ef5428fba40 (diff) | |
download | lingo2-archipelago-bed3397a3acb42104cbf085455954313178d8433.tar.gz lingo2-archipelago-bed3397a3acb42104cbf085455954313178d8433.tar.bz2 lingo2-archipelago-bed3397a3acb42104cbf085455954313178d8433.zip |
Added option for Daedalus roof access logic
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}" |