diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2025-09-19 11:04:48 -0400 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2025-09-19 11:04:48 -0400 |
commit | 2115232d2fec48fceef052b476af4afb02746ad1 (patch) | |
tree | 9d749646b51ad3da524dc9f6b71407bfa57541ad /apworld | |
parent | 1aca0f7e9ffa215ceb877ca55d667b4ee919b07e (diff) | |
download | lingo2-archipelago-2115232d2fec48fceef052b476af4afb02746ad1.tar.gz lingo2-archipelago-2115232d2fec48fceef052b476af4afb02746ad1.tar.bz2 lingo2-archipelago-2115232d2fec48fceef052b476af4afb02746ad1.zip |
Added strict purple/cyan ending options
Diffstat (limited to 'apworld')
-rw-r--r-- | apworld/__init__.py | 2 | ||||
-rw-r--r-- | apworld/options.py | 18 | ||||
-rw-r--r-- | apworld/regions.py | 6 |
3 files changed, 26 insertions, 0 deletions
diff --git a/apworld/__init__.py b/apworld/__init__.py index 8b2e42e..f1de503 100644 --- a/apworld/__init__.py +++ b/apworld/__init__.py | |||
@@ -100,6 +100,8 @@ class Lingo2World(World): | |||
100 | "shuffle_gallery_paintings", | 100 | "shuffle_gallery_paintings", |
101 | "shuffle_letters", | 101 | "shuffle_letters", |
102 | "shuffle_symbols", | 102 | "shuffle_symbols", |
103 | "strict_cyan_ending", | ||
104 | "strict_purple_ending", | ||
103 | "victory_condition", | 105 | "victory_condition", |
104 | ] | 106 | ] |
105 | 107 | ||
diff --git a/apworld/options.py b/apworld/options.py index 52d2034..3646eea 100644 --- a/apworld/options.py +++ b/apworld/options.py | |||
@@ -92,6 +92,22 @@ class DaedalusRoofAccess(Toggle): | |||
92 | display_name = "Allow Daedalus Roof Access" | 92 | display_name = "Allow Daedalus Roof Access" |
93 | 93 | ||
94 | 94 | ||
95 | class StrictPurpleEnding(DefaultOnToggle): | ||
96 | """ | ||
97 | If enabled, the player will be required to have all purple (level 1) letters in order to get Purple Ending. | ||
98 | Otherwise, some of the letters may be skippable depending on the other options. | ||
99 | """ | ||
100 | display_name = "Strict Purple Ending" | ||
101 | |||
102 | |||
103 | class StrictCyanEnding(DefaultOnToggle): | ||
104 | """ | ||
105 | If enabled, the player will be required to have all cyan (level 2) letters in order to get Cyan Ending. Otherwise, | ||
106 | at least J2, Q2, and V2 are skippable. Others may also be skippable depending on the options chosen. | ||
107 | """ | ||
108 | display_name = "Strict Cyan Ending" | ||
109 | |||
110 | |||
95 | class VictoryCondition(Choice): | 111 | class VictoryCondition(Choice): |
96 | """ | 112 | """ |
97 | This option determines what your goal is. | 113 | This option determines what your goal is. |
@@ -144,5 +160,7 @@ class Lingo2Options(PerGameCommonOptions): | |||
144 | keyholder_sanity: KeyholderSanity | 160 | keyholder_sanity: KeyholderSanity |
145 | cyan_door_behavior: CyanDoorBehavior | 161 | cyan_door_behavior: CyanDoorBehavior |
146 | daedalus_roof_access: DaedalusRoofAccess | 162 | daedalus_roof_access: DaedalusRoofAccess |
163 | strict_purple_ending: StrictPurpleEnding | ||
164 | strict_cyan_ending: StrictCyanEnding | ||
147 | victory_condition: VictoryCondition | 165 | victory_condition: VictoryCondition |
148 | trap_percentage: TrapPercentage | 166 | trap_percentage: TrapPercentage |
diff --git a/apworld/regions.py b/apworld/regions.py index fad9bc7..993eec8 100644 --- a/apworld/regions.py +++ b/apworld/regions.py | |||
@@ -97,6 +97,12 @@ def create_regions(world: "Lingo2World"): | |||
97 | else: | 97 | else: |
98 | connection_name = f"{connection_name} (via panel {panel.name})" | 98 | connection_name = f"{connection_name} (via panel {panel.name})" |
99 | 99 | ||
100 | if connection.HasField("purple_ending") and connection.purple_ending and world.options.strict_purple_ending: | ||
101 | world.player_logic.add_solution_reqs(reqs, "abcdefghijklmnopqrstuvwxyz") | ||
102 | |||
103 | if connection.HasField("cyan_ending") and connection.cyan_ending and world.options.strict_cyan_ending: | ||
104 | world.player_logic.add_solution_reqs(reqs, "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") | ||
105 | |||
100 | reqs.simplify() | 106 | reqs.simplify() |
101 | reqs.remove_room(from_region) | 107 | reqs.remove_room(from_region) |
102 | 108 | ||