Muse Dash: Change Data storage from a .txt file to a .py file and Filter Webhost Song Lists correctly (#4234)

This commit is contained in:
Justus Lind
2025-01-13 03:59:16 +10:00
committed by GitHub
parent 9928639ce2
commit 3f935aac13
7 changed files with 656 additions and 705 deletions

View File

@@ -1,13 +1,14 @@
from Options import Toggle, Range, Choice, DeathLink, ItemSet, OptionSet, PerGameCommonOptions, OptionGroup, Removed
from Options import Toggle, Range, Choice, DeathLink, OptionSet, PerGameCommonOptions, OptionGroup, Removed
from dataclasses import dataclass
from .MuseDashCollection import MuseDashCollections
from .MuseDashData import SONG_DATA
class DLCMusicPacks(OptionSet):
"""
Choose which DLC Packs will be included in the pool of chooseable songs.
Note: The [Just As Planned] DLC contains all [Muse Plus] songs.
"""
display_name = "DLC Packs"
@@ -17,7 +18,7 @@ class DLCMusicPacks(OptionSet):
class StreamerModeEnabled(Toggle):
"""
In Muse Dash, an option named 'Streamer Mode' removes songs which may trigger copyright issues when streaming.
If this is enabled, only songs available under Streamer Mode will be available for randomization.
"""
display_name = "Streamer Mode Only Songs"
@@ -69,7 +70,7 @@ class DifficultyMode(Choice):
class DifficultyModeOverrideMin(Range):
"""
Ensures that 1 difficulty has at least 1 this value or higher per song.
Note: Difficulty Mode must be set to Manual.
"""
display_name = "Manual Difficulty Min"
@@ -82,7 +83,7 @@ class DifficultyModeOverrideMin(Range):
class DifficultyModeOverrideMax(Range):
"""
Ensures that 1 difficulty has at least 1 this value or lower per song.
Note: Difficulty Mode must be set to Manual.
"""
display_name = "Manual Difficulty Max"
@@ -114,7 +115,7 @@ class GradeNeeded(Choice):
class MusicSheetCountPercentage(Range):
"""
Controls how many music sheets are added to the pool based on the number of songs, including starting songs.
Higher numbers leads to more consistent game lengths, but will cause individual music sheets to be less important.
"""
range_start = 10
@@ -137,7 +138,7 @@ class ChosenTraps(OptionSet):
- Traps last the length of a song, or until you die.
- VFX Traps consist of visual effects that play over the song. (i.e. Grayscale.)
- SFX Traps consist of changing your sfx setting to one possibly more annoying sfx.
Note: SFX traps are only available if [Just as Planned] DLC songs are enabled.
"""
display_name = "Chosen Traps"
@@ -152,24 +153,26 @@ class TrapCountPercentage(Range):
display_name = "Trap Percentage"
class IncludeSongs(ItemSet):
class SongSet(OptionSet):
valid_keys = SONG_DATA.keys()
class IncludeSongs(SongSet):
"""
These songs will be guaranteed to show up within the seed.
- You must have the DLC enabled to play these songs.
- Difficulty options will not affect these songs.
- If there are too many included songs, this will act as a whitelist ignoring song difficulty.
"""
verify_item_name = True
display_name = "Include Songs"
class ExcludeSongs(ItemSet):
class ExcludeSongs(SongSet):
"""
These songs will be guaranteed to not show up within the seed.
Note: Does not affect songs within the "Include Songs" list.
"""
verify_item_name = True
display_name = "Exclude Songs"
@@ -211,7 +214,7 @@ class MuseDashOptions(PerGameCommonOptions):
death_link: DeathLink
include_songs: IncludeSongs
exclude_songs: ExcludeSongs
# Removed
allow_just_as_planned_dlc_songs: Removed
available_trap_types: Removed