about summary refs log tree commit diff stats
path: root/apworld/options.py
diff options
context:
space:
mode:
Diffstat (limited to 'apworld/options.py')
-rw-r--r--apworld/options.py55
1 files changed, 54 insertions, 1 deletions
diff --git a/apworld/options.py b/apworld/options.py index 5661351..c1eab33 100644 --- a/apworld/options.py +++ b/apworld/options.py
@@ -1,6 +1,6 @@
1from dataclasses import dataclass 1from dataclasses import dataclass
2 2
3from Options import PerGameCommonOptions, Toggle, Choice, DefaultOnToggle, Range, OptionSet 3from Options import PerGameCommonOptions, Toggle, Choice, DefaultOnToggle, Range, OptionSet, FreeText
4 4
5 5
6class ShuffleDoors(DefaultOnToggle): 6class ShuffleDoors(DefaultOnToggle):
@@ -44,6 +44,17 @@ class ShuffleLetters(Choice):
44 option_item_cyan = 4 44 option_item_cyan = 4
45 45
46 46
47class RestrictLetterPlacements(Toggle):
48 """
49 If enabled, letter items will be shuffled among letter locations in your local world. Shuffle Letters must be set to
50 Progressive or Item Cyan for this to be useful.
51
52 WARNING: This option may slow down generation. Additionally, it is only reliable with Shuffle Letters set to Item
53 Cyan. When set to Progressive, Shuffle Doors and Shuffle Symbols must be turned off.
54 """
55 display_name = "Restrict Letter Placements"
56
57
47class ShuffleSymbols(Toggle): 58class ShuffleSymbols(Toggle):
48 """ 59 """
49 If enabled, 19 items will be added to the pool, representing the different symbols that can appear on a panel. 60 If enabled, 19 items will be added to the pool, representing the different symbols that can appear on a panel.
@@ -91,6 +102,27 @@ class CyanDoorBehavior(Choice):
91 option_item = 2 102 option_item = 2
92 103
93 104
105class ShuffleFastTravel(Toggle):
106 """If enabled, the list of maps you can fast travel to is randomized, except for The Entry, which is always
107 accessible."""
108 display_name = "Shuffle Fast Travel"
109
110
111class FastTravelAccess(Choice):
112 """
113 Controls how the fast travel buttons on the pause menu work.
114
115 - **Vanilla**: You can only fast travel to maps once you have been to them and stepped foot in the general area that
116 the warp would place you. This option means that fast travel has no impact on logic.
117 - **Unlocked**: All five fast travel maps will be available from the start.
118 - **Items**: Only The Entry is available from the start. The other fast travel buttons are locked behind items.
119 """
120 display_name = "Fast Travel Access"
121 option_vanilla = 0
122 option_unlocked = 1
123 option_items = 2
124
125
94class EnableIcarus(Toggle): 126class EnableIcarus(Toggle):
95 """ 127 """
96 Controls whether Icarus is randomized. If disabled, which is the default, no locations or items will be created for 128 Controls whether Icarus is randomized. If disabled, which is the default, no locations or items will be created for
@@ -146,6 +178,15 @@ class DaedalusRoofAccess(Toggle):
146 display_name = "Allow Daedalus Roof Access" 178 display_name = "Allow Daedalus Roof Access"
147 179
148 180
181class CustomMintEnding(FreeText):
182 """
183 If not blank, this will add a new panel that must be solved before collecting Mint Ending (EXIT in the Control
184 Center). The panel will only require typing the text provided for this option, which means the choice of letters
185 here has an impact on logic.
186 """
187 display_name = "Custom Mint Ending"
188
189
149class StrictPurpleEnding(DefaultOnToggle): 190class StrictPurpleEnding(DefaultOnToggle):
150 """ 191 """
151 If enabled, the player will be required to have all purple (level 1) letters in order to get Purple Ending. 192 If enabled, the player will be required to have all purple (level 1) letters in order to get Purple Ending.
@@ -224,23 +265,35 @@ class TrapPercentage(Range):
224 default = 0 265 default = 0
225 266
226 267
268class ShuffleMusic(Toggle):
269 """
270 If enabled, every map will be assigned a random music track.
271 """
272 display_name = "Shuffle Music"
273
274
227@dataclass 275@dataclass
228class Lingo2Options(PerGameCommonOptions): 276class Lingo2Options(PerGameCommonOptions):
229 shuffle_doors: ShuffleDoors 277 shuffle_doors: ShuffleDoors
230 shuffle_control_center_colors: ShuffleControlCenterColors 278 shuffle_control_center_colors: ShuffleControlCenterColors
231 shuffle_gallery_paintings: ShuffleGalleryPaintings 279 shuffle_gallery_paintings: ShuffleGalleryPaintings
232 shuffle_letters: ShuffleLetters 280 shuffle_letters: ShuffleLetters
281 restrict_letter_placements: RestrictLetterPlacements
233 shuffle_symbols: ShuffleSymbols 282 shuffle_symbols: ShuffleSymbols
234 shuffle_worldports: ShuffleWorldports 283 shuffle_worldports: ShuffleWorldports
235 keyholder_sanity: KeyholderSanity 284 keyholder_sanity: KeyholderSanity
236 cyan_door_behavior: CyanDoorBehavior 285 cyan_door_behavior: CyanDoorBehavior
286 shuffle_fast_travel: ShuffleFastTravel
287 fast_travel_access: FastTravelAccess
237 enable_icarus: EnableIcarus 288 enable_icarus: EnableIcarus
238 enable_gift_maps: EnableGiftMaps 289 enable_gift_maps: EnableGiftMaps
239 daedalus_only: DaedalusOnly 290 daedalus_only: DaedalusOnly
240 daedalus_roof_access: DaedalusRoofAccess 291 daedalus_roof_access: DaedalusRoofAccess
292 custom_mint_ending: CustomMintEnding
241 strict_purple_ending: StrictPurpleEnding 293 strict_purple_ending: StrictPurpleEnding
242 strict_cyan_ending: StrictCyanEnding 294 strict_cyan_ending: StrictCyanEnding
243 victory_condition: VictoryCondition 295 victory_condition: VictoryCondition
244 endings_requirement: EndingsRequirement 296 endings_requirement: EndingsRequirement
245 masteries_requirement: MasteriesRequirement 297 masteries_requirement: MasteriesRequirement
246 trap_percentage: TrapPercentage 298 trap_percentage: TrapPercentage
299 shuffle_music: ShuffleMusic