-
Notifications
You must be signed in to change notification settings - Fork 0
/
Options.py
300 lines (235 loc) · 7.65 KB
/
Options.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
from Options import Choice, Toggle, StartInventoryPool, PerGameCommonOptions, Range, Removed
from dataclasses import dataclass
class BowsersCastleSkip(Toggle):
"""
Skip straight from the entrance hall to Bowletta in Bowser's Castle.
All Bowser's Castle locations will be removed from the location pool.
"""
display_name = "Bowser's Castle Skip"
class ExtraPipes(Toggle):
"""
Gives the player access to pipes 1, 3, 4, and 6 from the start.
"""
display_name = "Start With Extra Pipes"
class SkipMinecart(Toggle):
"""
Skip the minecart minigame that leads you through Hoohoo Mountain Base.
This will remove the 1 location in the minecart cave from the location pool.
"""
display_name = "Skip Minecart Minigame"
class DisableSurf(Toggle):
"""
Remove the surf minigame location from the location pool.
"""
display_name = "Disable Surf Minigame"
class MusicOptions(Choice):
"""
Choose if you want to randomize or disable music.
default: Music will be untouched.
randomize: Music will be randomized.
disable: All music will be disabled. No music will play throughout the entire game.
"""
display_name = "Music Options"
option_default = 0
option_randomize = 1
option_disable = 2
default = 0
class RandomSounds(Toggle):
"""
Randomizes every sound in the game, minus a select few that can softlock the game.
"""
display_name = "Randomize Sounds"
class MarioColor(Choice):
"""
This changes the color of Mario's hat, as well as some key colors that are red including UI etc.
"""
display_name = "Mario's Color"
option_red = 0
option_green = 1
option_blue = 2
option_cyan = 3
option_yellow = 4
option_orange = 5
option_purple = 6
option_pink = 7
option_black = 8
option_white = 9
option_silhouette = 10
option_chaos = 11
option_true_chaos = 12
default = 0
class LuigiColor(Choice):
"""
This changes the color of Luigi's hat, as well as some key colors that are green including UI etc.
"""
display_name = "Luigi's Color"
option_red = 0
option_green = 1
option_blue = 2
option_cyan = 3
option_yellow = 4
option_orange = 5
option_purple = 6
option_pink = 7
option_black = 8
option_white = 9
option_silhouette = 10
option_chaos = 11
option_true_chaos = 12
default = 1
class MarioPants(Choice):
"""
This changes the color of Mario's trousers.
"""
display_name = "Mario's Pants Color"
option_vanilla = 0
option_red = 1
option_green = 2
option_blue = 3
option_cyan = 4
option_yellow = 5
option_orange = 6
option_purple = 7
option_pink = 8
option_black = 9
option_white = 10
option_chaos = 11
default = 0
class LuigiPants(Choice):
"""
This changes the color of Luigi's trousers.
"""
display_name = "Luigi's Pants Color"
option_vanilla = 0
option_red = 1
option_green = 2
option_blue = 3
option_cyan = 4
option_yellow = 5
option_orange = 6
option_purple = 7
option_pink = 8
option_black = 9
option_white = 10
option_chaos = 11
default = 0
class RandomizeEnemies(Choice):
"""
Randomize all normal enemy encounters in the game.
If Bowser's castle skip is enabled, then enemies from Bowser's Castle will not be included.
Disabled: Enemies will not be randomized.
Vanilla Groups: Vanilla enemy groups will be shuffled with each other. Custom enemy groups will not be made.
Custom Groups: Custom enemy groups will be made and shuffled. Some enemy groups will only be semi-random,
including groups with flying enemies or pestnuts in them.
"""
display_name = "Randomize Enemies"
option_disabled = 0
option_vanilla_groups = 1
option_custom_groups = 2
default = 0
class RandomizeBosses(Choice):
"""
Randomize all boss encounters in the game.
If Bowser's castle skip is enabled then bosses from Bowser's Castle will not be included.
Some bosses are not randomized due to flags, and story (such as the final boss).
Boss Only: Bosses will only be swapped with another boss.
Boss Normal: Bosses can be swapped with normal enemy encounters.
"""
display_name = "Randomize Bosses"
option_disabled = 0
option_boss_only = 1
option_boss_normal = 2
default = 0
class ScaleStats(Toggle):
"""
This scales enemy HP, POW, DEF, and XP to vanilla values.
This setting is intended for use with the Enemy Randomizer and is Recommended to turn on.
If you are not using the Enemy Randomizer the effects will be minimal.
"""
display_name = "Scale Enemy Stats"
class XPMultiplier(Range):
"""
This will multiply any XP you receive in battle by the chosen multiplier.
"""
display_name = "XP Multiplier"
range_start = 0
range_end = 4
default = 1
class TattleHp(Toggle):
"""
This will display the enemies' current and max health while in battle.
"""
display_name = "Tattle HP"
class RandomizeBackgrounds(Toggle):
"""
This randomizes the background image in battles.
"""
display_name = "Randomize Battle Backgrounds"
class HiddenVisible(Choice):
"""
This makes any hidden blocks in the game into regular item blocks and vice versa.
Disabled: Hidden blocks will remain invisible.
Hidden Visible: Hidden blocks will turn visible to the player.
Blocks Invisible: All item blocks will turn invisible. Hidden blocks will also remain invisible.
"""
display_name = "Item Block Visibility"
option_disabled = 0
option_hidden_visible = 1
option_blocks_invisible = 2
default = 0
class Coins(Toggle):
"""
Add all coin blocks in the game to the location pool.
"""
display_name = "Coin Blocks"
class HarhallsPants(Toggle):
"""
This will remove the Harhall's Pants check from the pool.
"""
display_name = "Remove Harhall's Pants"
class DifficultLogic(Toggle):
"""
This adjusts the logic to be more difficult in a few areas,
allowing for the logic to account for players getting to certain areas in unintended ways.
Enable at your own risk, this is not an option made for beginners.
"""
display_name = "Difficult Logic"
class ChuckleBeans(Choice):
"""
Choose how you want chuckle bean digspots to be randomized.
An amount of chuckle beans will be removed from the item pool,
equal to the amount of locations removed by the setting that you choose.
None: No chuckle bean digspots will be added into the location pool.
Only Visible: Only chuckle bean digspots clearly marked with an X will be added into the location pool.
All: All chuckle bean digspots will be added into the location pool.
"""
display_name = "Chuckle Beans"
option_none = 0
option_only_visible = 1
option_all = 2
default = 2
@dataclass
class MLSSOptions(PerGameCommonOptions):
start_inventory_from_pool: StartInventoryPool
coins: Coins
difficult_logic: DifficultLogic
castle_skip: BowsersCastleSkip
extra_pipes: ExtraPipes
skip_minecart: SkipMinecart
disable_surf: DisableSurf
disable_harhalls_pants: HarhallsPants
harhalls_pants: Removed
block_visibility: HiddenVisible
chuckle_beans: ChuckleBeans
music_options: MusicOptions
randomize_sounds: RandomSounds
randomize_enemies: RandomizeEnemies
randomize_bosses: RandomizeBosses
randomize_backgrounds: RandomizeBackgrounds
scale_stats: ScaleStats
xp_multiplier: XPMultiplier
tattle_hp: TattleHp
mario_color: MarioColor
luigi_color: LuigiColor
mario_pants: MarioPants
luigi_pants: LuigiPants