1
- from typing import Dict
2
- from Options import Toggle , Option , Range , Choice , DeathLink , ItemSet , OptionSet , PerGameCommonOptions
1
+ from Options import Toggle , Range , Choice , DeathLink , ItemSet , OptionSet , PerGameCommonOptions , OptionGroup , Removed
3
2
from dataclasses import dataclass
4
3
5
4
from .MuseDashCollection import MuseDashCollections
6
5
7
6
8
- class AllowJustAsPlannedDLCSongs (Toggle ):
9
- """Whether [Muse Plus] DLC Songs, and all the albums included in it, can be chosen as randomised songs.
10
- Note: The [Just As Planned] DLC contains all [Muse Plus] songs."""
11
- display_name = "Allow [Muse Plus] DLC Songs"
12
-
13
-
14
7
class DLCMusicPacks (OptionSet ):
15
- """Which non-[Muse Plus] DLC packs can be chosen as randomised songs."""
8
+ """
9
+ Choose which DLC Packs will be included in the pool of chooseable songs.
10
+
11
+ Note: The [Just As Planned] DLC contains all [Muse Plus] songs.
12
+ """
16
13
display_name = "DLC Packs"
17
14
default = {}
18
15
valid_keys = [dlc for dlc in MuseDashCollections .DLC ]
19
16
20
17
21
18
class StreamerModeEnabled (Toggle ):
22
- """In Muse Dash, an option named 'Streamer Mode' removes songs which may trigger copyright issues when streaming.
23
- If this is enabled, only songs available under Streamer Mode will be available for randomization."""
19
+ """
20
+ In Muse Dash, an option named 'Streamer Mode' removes songs which may trigger copyright issues when streaming.
21
+
22
+ If this is enabled, only songs available under Streamer Mode will be available for randomization.
23
+ """
24
24
display_name = "Streamer Mode Only Songs"
25
25
26
26
@@ -33,7 +33,8 @@ class StartingSongs(Range):
33
33
34
34
35
35
class AdditionalSongs (Range ):
36
- """The total number of songs that will be placed in the randomization pool.
36
+ """
37
+ The total number of songs that will be placed in the randomization pool.
37
38
- This does not count any starting songs or the goal song.
38
39
- The final song count may be lower due to other settings.
39
40
"""
@@ -44,7 +45,8 @@ class AdditionalSongs(Range):
44
45
45
46
46
47
class DifficultyMode (Choice ):
47
- """Ensures that at any chosen song has at least 1 value falling within these values.
48
+ """
49
+ Ensures that at any chosen song has at least 1 value falling within these values.
48
50
- Any: All songs are available
49
51
- Easy: 1, 2 or 3
50
52
- Medium: 4, 5
@@ -66,8 +68,11 @@ class DifficultyMode(Choice):
66
68
67
69
# Todo: Investigate options to make this non randomizable
68
70
class DifficultyModeOverrideMin (Range ):
69
- """Ensures that 1 difficulty has at least 1 this value or higher per song.
70
- - Difficulty Mode must be set to Manual."""
71
+ """
72
+ Ensures that 1 difficulty has at least 1 this value or higher per song.
73
+
74
+ Note: Difficulty Mode must be set to Manual.
75
+ """
71
76
display_name = "Manual Difficulty Min"
72
77
range_start = 1
73
78
range_end = 11
@@ -76,16 +81,20 @@ class DifficultyModeOverrideMin(Range):
76
81
77
82
# Todo: Investigate options to make this non randomizable
78
83
class DifficultyModeOverrideMax (Range ):
79
- """Ensures that 1 difficulty has at least 1 this value or lower per song.
80
- - Difficulty Mode must be set to Manual."""
84
+ """
85
+ Ensures that 1 difficulty has at least 1 this value or lower per song.
86
+
87
+ Note: Difficulty Mode must be set to Manual.
88
+ """
81
89
display_name = "Manual Difficulty Max"
82
90
range_start = 1
83
91
range_end = 11
84
92
default = 8
85
93
86
94
87
95
class GradeNeeded (Choice ):
88
- """Completing a song will require a grade of this value or higher in order to unlock items.
96
+ """
97
+ Completing a song will require a grade of this value or higher in order to unlock items.
89
98
The grades are as follows:
90
99
- Silver S (SS): >= 95% accuracy
91
100
- Pink S (S): >= 90% accuracy
@@ -104,7 +113,9 @@ class GradeNeeded(Choice):
104
113
105
114
106
115
class MusicSheetCountPercentage (Range ):
107
- """Controls how many music sheets are added to the pool based on the number of songs, including starting songs.
116
+ """
117
+ Controls how many music sheets are added to the pool based on the number of songs, including starting songs.
118
+
108
119
Higher numbers leads to more consistent game lengths, but will cause individual music sheets to be less important.
109
120
"""
110
121
range_start = 10
@@ -121,19 +132,18 @@ class MusicSheetWinCountPercentage(Range):
121
132
display_name = "Music Sheets Needed to Win"
122
133
123
134
124
- class TrapTypes (Choice ):
125
- """This controls the types of traps that can be added to the pool.
135
+ class ChosenTraps (OptionSet ):
136
+ """
137
+ This controls the types of traps that can be added to the pool.
138
+ - Traps last the length of a song, or until you die.
126
139
- VFX Traps consist of visual effects that play over the song. (i.e. Grayscale.)
127
140
- SFX Traps consist of changing your sfx setting to one possibly more annoying sfx.
128
- Traps last the length of a song, or until you die.
141
+
129
142
Note: SFX traps are only available if [Just as Planned] DLC songs are enabled.
130
143
"""
131
- display_name = "Available Trap Types"
132
- option_None = 0
133
- option_VFX = 1
134
- option_SFX = 2
135
- option_All = 3
136
- default = 3
144
+ display_name = "Chosen Traps"
145
+ default = {}
146
+ valid_keys = {trap for trap in MuseDashCollections .trap_items .keys ()}
137
147
138
148
139
149
class TrapCountPercentage (Range ):
@@ -145,24 +155,49 @@ class TrapCountPercentage(Range):
145
155
146
156
147
157
class IncludeSongs (ItemSet ):
148
- """Any song listed here will be guaranteed to be included as part of the seed.
149
- - Difficulty options will be skipped for these songs.
150
- - If there being too many included songs, songs will be randomly chosen without regard for difficulty.
151
- - If you want these songs immediately, use start_inventory instead.
158
+ """
159
+ These songs will be guaranteed to show up within the seed.
160
+ - You must have the DLC enabled to play these songs.
161
+ - Difficulty options will not affect these songs.
162
+ - If there are too many included songs, this will act as a whitelist ignoring song difficulty.
152
163
"""
153
164
verify_item_name = True
154
165
display_name = "Include Songs"
155
166
156
167
157
168
class ExcludeSongs (ItemSet ):
158
- """Any song listed here will be excluded from being a part of the seed."""
169
+ """
170
+ These songs will be guaranteed to not show up within the seed.
171
+
172
+ Note: Does not affect songs within the "Include Songs" list.
173
+ """
159
174
verify_item_name = True
160
175
display_name = "Exclude Songs"
161
176
162
177
178
+ md_option_groups = [
179
+ OptionGroup ("Song Choice" , [
180
+ DLCMusicPacks ,
181
+ StreamerModeEnabled ,
182
+ IncludeSongs ,
183
+ ExcludeSongs ,
184
+ ]),
185
+ OptionGroup ("Difficulty" , [
186
+ GradeNeeded ,
187
+ DifficultyMode ,
188
+ DifficultyModeOverrideMin ,
189
+ DifficultyModeOverrideMax ,
190
+ DeathLink ,
191
+ ]),
192
+ OptionGroup ("Traps" , [
193
+ ChosenTraps ,
194
+ TrapCountPercentage ,
195
+ ]),
196
+ ]
197
+
198
+
163
199
@dataclass
164
200
class MuseDashOptions (PerGameCommonOptions ):
165
- allow_just_as_planned_dlc_songs : AllowJustAsPlannedDLCSongs
166
201
dlc_packs : DLCMusicPacks
167
202
streamer_mode_enabled : StreamerModeEnabled
168
203
starting_song_count : StartingSongs
@@ -173,8 +208,12 @@ class MuseDashOptions(PerGameCommonOptions):
173
208
grade_needed : GradeNeeded
174
209
music_sheet_count_percentage : MusicSheetCountPercentage
175
210
music_sheet_win_count_percentage : MusicSheetWinCountPercentage
176
- available_trap_types : TrapTypes
211
+ chosen_traps : ChosenTraps
177
212
trap_count_percentage : TrapCountPercentage
178
213
death_link : DeathLink
179
214
include_songs : IncludeSongs
180
215
exclude_songs : ExcludeSongs
216
+
217
+ # Removed
218
+ allow_just_as_planned_dlc_songs : Removed
219
+ available_trap_types : Removed
0 commit comments