about summary refs log tree commit diff stats
path: root/apworld
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-09-19 11:04:48 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-09-19 11:04:48 -0400
commit2115232d2fec48fceef052b476af4afb02746ad1 (patch)
tree9d749646b51ad3da524dc9f6b71407bfa57541ad /apworld
parent1aca0f7e9ffa215ceb877ca55d667b4ee919b07e (diff)
downloadlingo2-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__.py2
-rw-r--r--apworld/options.py18
-rw-r--r--apworld/regions.py6
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
95class 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
103class 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
95class VictoryCondition(Choice): 111class 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