300 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			300 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from Options import Choice, Toggle, StartInventoryPool, PerGameCommonOptions, Range
							 | 
						||
| 
								 | 
							
								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
							 | 
						||
| 
								 | 
							
								    harhalls_pants: HarhallsPants
							 | 
						||
| 
								 | 
							
								    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
							 |