 955a86803f
			
		
	
	955a86803f
	
	
	
		
			
			Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Co-authored-by: alchav <alchav@jalchavware.com>
		
			
				
	
	
		
			199 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			199 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from Options import Toggle, Choice, NamedRange, Range, PerGameCommonOptions, ItemsAccessibility
 | |
| from dataclasses import dataclass
 | |
| 
 | |
| 
 | |
| class ShuffleGoldenCoins(Choice):
 | |
|     """
 | |
|     Vanilla: Golden Coins are received when defeating bosses.
 | |
|     Shuffle: Shuffle the Golden Coins into the item pool and make bosses location checks.
 | |
|     Mario Coin Fragment Hunt: You start with all Golden Coins except the Mario Coin, which has been fragmented into many pieces.
 | |
|     You will see a Golden Coin being received when defeating bosses regardless of whether you are actually getting a coin.
 | |
|     """
 | |
|     display_name = "Shuffle Golden Coins"
 | |
|     default = 0
 | |
|     option_vanilla = 0
 | |
|     option_shuffle = 1
 | |
|     option_mario_coin_fragment_hunt = 2
 | |
| 
 | |
| 
 | |
| class GoldenCoinsRequired(Range):
 | |
|     """
 | |
|     Number of Golden Coins required to enter Mario's Castle. Ignored on Mario Coin Fragment Hunt.
 | |
|     """
 | |
|     display_name = "Golden Coins Required"
 | |
|     range_start = 0
 | |
|     range_end = 6
 | |
|     default = 6
 | |
| 
 | |
| 
 | |
| class MarioCoinFragmentPercentage(Range):
 | |
|     """
 | |
|     Percentage of filler items to be replaced with Mario Coin Fragments. Note that the Coinsanity and Coinsanity
 | |
|     Checks options will greatly impact the number of replaceable filler items.
 | |
|     """
 | |
|     display_name = "Mario Coin Fragment Percentage"
 | |
|     range_start = 1
 | |
|     range_end = 50
 | |
|     default = 20
 | |
| 
 | |
| 
 | |
| class MarioCoinFragmentsRequiredPercentage(Range):
 | |
|     """
 | |
|     Percentage of the Mario Coins in the item pool that are required to put the Mario Coin together.
 | |
|     """
 | |
|     display_name = "Mario Coin Fragments Required Percentage"
 | |
|     range_start = 1
 | |
|     range_end = 100
 | |
|     default = 75
 | |
| 
 | |
| 
 | |
| class ShuffleMidwayBells(Toggle):
 | |
|     """
 | |
|     Shuffle Midway Bells into the item pool. You can always start at the beginning of a level after obtaining the
 | |
|     Midway Bell by holding SELECT while entering the level (until you load into the level).
 | |
|     The Midway Bells in levels will trigger location checks whether this option is on or not, but they will only
 | |
|     set the checkpoint if this is off, otherwise you must obtain the Midway Bell item from the item pool.
 | |
|     """
 | |
|     display_name = "Shuffle Midway Bells"
 | |
| 
 | |
| 
 | |
| class MariosCastleMidwayBell(Toggle):
 | |
|     """
 | |
|     Adds a Midway Bell to the final stage, just before the Wario fight.
 | |
|     """
 | |
|     display_name = "Mario's Castle Midway Bell"
 | |
| 
 | |
| 
 | |
| class Coinsanity(Toggle):
 | |
|     """
 | |
|     Shuffles the singular coins found freestanding and in question mark blocks into the item pool, and adds location
 | |
|     checks made by obtaining a sufficient number of coins in particular levels within a single playthrough.
 | |
|     """
 | |
|     display_name = "Coinsanity"
 | |
| 
 | |
| 
 | |
| class CoinsanityChecks(Range):
 | |
|     """
 | |
|     Number of Coinsanity checks.
 | |
|     A higher number means more checks, and smaller coin amounts per coin item in the item pool.
 | |
|     If Accessibility is set to Full, auto-scroll levels may have a lower maximum count, which may lead to this
 | |
|     value being limited.
 | |
|     """
 | |
|     display_name = "Coinsanity Checks"
 | |
|     range_start = 31
 | |
|     range_end = 2599
 | |
|     default = 150
 | |
| 
 | |
| 
 | |
| class DifficultyMode(Choice):
 | |
|     """
 | |
|     Play in normal or easy mode. You can also start in Normal Mode with an "upgrade" to Easy Mode in the item pool,
 | |
|     or start in Easy Mode with a Normal Mode "trap" in the item pool.
 | |
|     """
 | |
|     display_name = "Difficulty Mode"
 | |
|     option_normal = 0
 | |
|     option_easy = 1
 | |
|     option_normal_to_easy = 2
 | |
|     option_easy_to_normal = 3
 | |
|     default = 0
 | |
| 
 | |
| 
 | |
| class ShufflePipeTraversal(Choice):
 | |
|     """
 | |
|     Single: Shuffle a Pipe Traversal item into the item pool, which is required to enter any pipes.
 | |
|     Split: Shuffle 4 Pipe Traversal items, one required for entering pipes from each direction.
 | |
|     Note that being unable to enter pipes is very limiting and affects nearly half of all levels.
 | |
|     """
 | |
|     display_name = "Shuffle Pipe Traversal"
 | |
|     option_off = 0
 | |
|     option_single = 1
 | |
|     option_split = 2
 | |
|     default = 0
 | |
| 
 | |
| 
 | |
| class RandomizeEnemies(Toggle):
 | |
|     """
 | |
|     Randomize enemies throughout levels.
 | |
|     """
 | |
|     display_name = "Randomize Enemies"
 | |
| 
 | |
| 
 | |
| class RandomizePlatforms(Toggle):
 | |
|     """
 | |
|     Randomize platforms throughout levels.
 | |
|     """
 | |
|     display_name = "Randomize Platforms"
 | |
| 
 | |
| 
 | |
| class AutoScrollChances(NamedRange):
 | |
|     """
 | |
|     Chance per eligible level to be made into an auto scroll level. Can also set to Vanilla to leave them unchanged.
 | |
|     """
 | |
|     display_name = "Auto Scroll Chance"
 | |
|     range_start = 0
 | |
|     range_end = 100
 | |
|     special_range_names = {"vanilla": -1, "none": 0, "all": 100}
 | |
|     default = -1
 | |
| 
 | |
| 
 | |
| class AutoScrollMode(Choice):
 | |
|     """
 | |
|     Always: Any auto scroll levels will always auto-scroll.
 | |
|     Global Trap Item: Auto scroll levels will only auto-scroll after obtaining the Auto Scroll trap item.
 | |
|     Level Trap Items: As with Trap Item, but there is a separate trap item for each auto scroll level.
 | |
|     Global Cancel Item: Auto Scroll levels will stop auto-scrolling after obtaining the Auto Scroll Cancel item.
 | |
|     Level Cancel Items: As with Cancel Item, but there is a separate cancel item for each auto scroll level.
 | |
|     Chaos: Each level will randomly always auto scroll, have an Auto Scroll Trap, or have an Auto Scroll Cancel item.
 | |
|     The effects of Trap and Cancel items are permanent! If Accessibility is not set to Full,
 | |
|     Traps may cause locations to become permanently unreachable.
 | |
|     With individual level items, the number of auto scroll levels may be limited by the available space in the item
 | |
|     pool.
 | |
|     """
 | |
|     display_name = "Auto Scroll Mode"
 | |
|     option_always = 0
 | |
|     option_global_trap_item = 1
 | |
|     option_level_trap_items = 2
 | |
|     option_global_cancel_item = 3
 | |
|     option_level_cancel_items = 4
 | |
|     option_chaos = 5
 | |
|     default = 0
 | |
| 
 | |
| 
 | |
| class RandomizeMusic(Toggle):
 | |
|     """
 | |
|     Randomize the music that plays in levels and overworld areas.
 | |
|     """
 | |
|     display_name = "Randomize Music"
 | |
| 
 | |
| 
 | |
| class EnergyLink(Toggle):
 | |
|     """
 | |
|     All extra lives beyond 1 are transferred into the server's shared EnergyLink storage. If you drop to 0,
 | |
|     1 will be replenished if there is sufficient energy stored.
 | |
|     """
 | |
|     display_name = "Energy Link"
 | |
|     default = 1
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| @dataclass
 | |
| class SML2Options(PerGameCommonOptions):
 | |
|     accessibility: ItemsAccessibility
 | |
|     shuffle_golden_coins: ShuffleGoldenCoins
 | |
|     required_golden_coins: GoldenCoinsRequired
 | |
|     mario_coin_fragment_percentage: MarioCoinFragmentPercentage
 | |
|     mario_coin_fragments_required_percentage: MarioCoinFragmentsRequiredPercentage
 | |
|     coinsanity: Coinsanity
 | |
|     coinsanity_checks: CoinsanityChecks
 | |
|     shuffle_midway_bells: ShuffleMidwayBells
 | |
|     marios_castle_midway_bell: MariosCastleMidwayBell
 | |
|     shuffle_pipe_traversal: ShufflePipeTraversal
 | |
|     auto_scroll_mode: AutoScrollMode
 | |
|     auto_scroll_chances: AutoScrollChances
 | |
|     difficulty_mode: DifficultyMode
 | |
|     randomize_enemies: RandomizeEnemies
 | |
|     randomize_platforms: RandomizePlatforms
 | |
|     randomize_music: RandomizeMusic
 | |
|     energy_link: EnergyLink
 |