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.py66
1 files changed, 65 insertions, 1 deletions
diff --git a/apworld/options.py b/apworld/options.py index 3646eea..f687434 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 3from Options import PerGameCommonOptions, Toggle, Choice, DefaultOnToggle, Range, OptionSet
4 4
5 5
6class ShuffleDoors(DefaultOnToggle): 6class ShuffleDoors(DefaultOnToggle):
@@ -52,6 +52,15 @@ class ShuffleSymbols(Toggle):
52 display_name = "Shuffle Symbols" 52 display_name = "Shuffle Symbols"
53 53
54 54
55class ShuffleWorldports(Toggle):
56 """
57 Randomizes the connections between maps. This affects worldports only, which are the loading zones you walk into in
58 order to change maps. This does not affect paintings, panels that teleport you, or certain other special connections
59 like the one between The Shop and Control Center.
60 """
61 display_name = "Shuffle Worldports"
62
63
55class KeyholderSanity(Toggle): 64class KeyholderSanity(Toggle):
56 """ 65 """
57 If enabled, 26 locations will be created for placing each key into its respective Green Ending keyholder. 66 If enabled, 26 locations will be created for placing each key into its respective Green Ending keyholder.
@@ -82,6 +91,36 @@ class CyanDoorBehavior(Choice):
82 option_item = 2 91 option_item = 2
83 92
84 93
94class EnableIcarus(Toggle):
95 """
96 Controls whether Icarus is randomized. If disabled, which is the default, no locations or items will be created for
97 it, and its worldport will not be shuffled when worldport shuffle is on.
98 """
99 display_name = "Enable Icarus"
100
101
102class EnableGiftMaps(OptionSet):
103 """
104 Controls whether the beta tester gift maps are randomized. By default, these are not accessible at all from within
105 the randomizer. This option allows you to enter the maps, and creates items and locations for them. If worldport
106 shuffle is on, their worldports will be included in the randomization.
107
108 The gift maps are accessed via a panel in The Entry's Starting Room, which only appears if at least one gift map is
109 enabled. It is also treated like a cyan door, and will not appear until the condition specified in the Cyan Door
110 Behavior option is satisfied. Solving this panel with the name of one of the beta testers will teleport you to their
111 corresponding gift map.
112
113 In the base game, nothing happens once you complete a gift map. Masteries have been added to the gift maps in the
114 randomizer so that the player can be rewarded for completing them.
115
116 Note that the gift maps were originally only intended to be played by specific people, and as a result may be
117 frustrating or require knowledge of inside jokes. The Crystalline is particularly difficult as it requires
118 completing a parkour course.
119 """
120 display_name = "Enable Gift Maps"
121 valid_keys = ["The Advanced", "The Charismatic", "The Crystalline", "The Fuzzy", "The Stellar"]
122
123
85class DaedalusRoofAccess(Toggle): 124class DaedalusRoofAccess(Toggle):
86 """ 125 """
87 If enabled, the player will be logically expected to be able to go from the castle entrance to any part of Daedalus 126 If enabled, the player will be logically expected to be able to go from the castle entrance to any part of Daedalus
@@ -142,6 +181,26 @@ class VictoryCondition(Choice):
142 option_white_ending = 12 181 option_white_ending = 12
143 182
144 183
184class EndingsRequirement(Range):
185 """The number of endings required to unlock White Ending."""
186 display_name = "Endings Requirement"
187 range_start = 0
188 range_end = 12
189 default = 12
190
191
192class MasteriesRequirement(Range):
193 """The number of masteries required to unlock White Ending.
194
195 There are only 13 masteries in the base game, but some of the other slot options may add more masteries to the
196 world. If the chosen number of masteries is higher than the total in your world, it will be automatically lowered to
197 the maximum."""
198 display_name = "Masteries Requirement"
199 range_start = 0
200 range_end = 19
201 default = 0
202
203
145class TrapPercentage(Range): 204class TrapPercentage(Range):
146 """Replaces junk items with traps, at the specified rate.""" 205 """Replaces junk items with traps, at the specified rate."""
147 display_name = "Trap Percentage" 206 display_name = "Trap Percentage"
@@ -157,10 +216,15 @@ class Lingo2Options(PerGameCommonOptions):
157 shuffle_gallery_paintings: ShuffleGalleryPaintings 216 shuffle_gallery_paintings: ShuffleGalleryPaintings
158 shuffle_letters: ShuffleLetters 217 shuffle_letters: ShuffleLetters
159 shuffle_symbols: ShuffleSymbols 218 shuffle_symbols: ShuffleSymbols
219 shuffle_worldports: ShuffleWorldports
160 keyholder_sanity: KeyholderSanity 220 keyholder_sanity: KeyholderSanity
161 cyan_door_behavior: CyanDoorBehavior 221 cyan_door_behavior: CyanDoorBehavior
222 enable_icarus: EnableIcarus
223 enable_gift_maps: EnableGiftMaps
162 daedalus_roof_access: DaedalusRoofAccess 224 daedalus_roof_access: DaedalusRoofAccess
163 strict_purple_ending: StrictPurpleEnding 225 strict_purple_ending: StrictPurpleEnding
164 strict_cyan_ending: StrictCyanEnding 226 strict_cyan_ending: StrictCyanEnding
165 victory_condition: VictoryCondition 227 victory_condition: VictoryCondition
228 endings_requirement: EndingsRequirement
229 masteries_requirement: MasteriesRequirement
166 trap_percentage: TrapPercentage 230 trap_percentage: TrapPercentage