 462ddce72c
			
		
	
	462ddce72c
	
	
	
		
			
			* Fix wrapping too early if docstring is within 120 characters and re-indent other lines. * Remove auto-word wrapping and tweaked all worlds' option docstrings formatting. Options should wrap around the 120 character mark to prevent template files from being too long horizontally. This also allows manual-indentation to work again. * Fix missing '#' on empty lines in output from docstring.
		
			
				
	
	
		
			238 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			238 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import typing
 | |
| 
 | |
| from Options import Choice, Range, Option, Toggle, DeathLink, DefaultOnToggle, OptionList
 | |
| 
 | |
| 
 | |
| class Goal(Choice):
 | |
|     """
 | |
|     Determines the goal of the seed
 | |
|     Bowser: Defeat Koopalings, reach Bowser's Castle and defeat Bowser
 | |
|     Yoshi Egg Hunt: Find a certain number of Yoshi Eggs
 | |
|     """
 | |
|     display_name = "Goal"
 | |
|     option_bowser = 0
 | |
|     option_yoshi_egg_hunt = 1
 | |
|     default = 0
 | |
| 
 | |
| 
 | |
| class BossesRequired(Range):
 | |
|     """
 | |
|     How many Bosses (Koopalings or Reznor) must be defeated in order to defeat Bowser
 | |
|     """
 | |
|     display_name = "Bosses Required"
 | |
|     range_start = 0
 | |
|     range_end = 11
 | |
|     default = 7
 | |
| 
 | |
| 
 | |
| class NumberOfYoshiEggs(Range):
 | |
|     """
 | |
|     How many Yoshi Eggs are in the pool for Yoshi Egg Hunt
 | |
|     """
 | |
|     display_name = "Total Number of Yoshi Eggs"
 | |
|     range_start = 1
 | |
|     range_end = 80
 | |
|     default = 50
 | |
| 
 | |
| 
 | |
| class PercentageOfYoshiEggs(Range):
 | |
|     """
 | |
|     What Percentage of Yoshi Eggs are required to finish Yoshi Egg Hunt
 | |
|     """
 | |
|     display_name = "Required Percentage of Yoshi Eggs"
 | |
|     range_start = 1
 | |
|     range_end = 100
 | |
|     default = 100
 | |
| 
 | |
| 
 | |
| class DragonCoinChecks(Toggle):
 | |
|     """
 | |
|     Whether collecting 5 Dragon Coins in each level will grant a check
 | |
|     """
 | |
|     display_name = "Dragon Coin Checks"
 | |
| 
 | |
| 
 | |
| class BowserCastleDoors(Choice):
 | |
|     """
 | |
|     How the doors of Bowser's Castle behave
 | |
|     Vanilla: Front and Back Doors behave as vanilla
 | |
|     Fast: Both doors behave as the Back Door
 | |
|     Slow: Both doors behave as the Front Door
 | |
|     "Front Door" requires beating all 8 Rooms
 | |
|     "Back Door" only requires going through the dark hallway to Bowser
 | |
|     """
 | |
|     display_name = "Bowser Castle Doors"
 | |
|     option_vanilla = 0
 | |
|     option_fast = 1
 | |
|     option_slow = 2
 | |
|     default = 0
 | |
| 
 | |
| 
 | |
| class LevelShuffle(Toggle):
 | |
|     """
 | |
|     Whether levels are shuffled
 | |
|     """
 | |
|     display_name = "Level Shuffle"
 | |
| 
 | |
| 
 | |
| class SwapDonutGhostHouseExits(Toggle):
 | |
|     """
 | |
|     If enabled, this option will swap which overworld direction the two exits of the level at the Donut Ghost House
 | |
|         overworld tile go:
 | |
|     False: Normal Exit goes up, Secret Exit goes right.
 | |
|     True: Normal Exit goes right, Secret Exit goes up.
 | |
|     """
 | |
|     display_name = "Swap Donut GH Exits"
 | |
| 
 | |
| 
 | |
| class DisplaySentItemPopups(Choice):
 | |
|     """
 | |
|     What messages to display in-game for items sent
 | |
|     """
 | |
|     display_name = "Display Sent Item Popups"
 | |
|     option_none = 0
 | |
|     option_all = 1
 | |
|     default = 1
 | |
| 
 | |
| 
 | |
| class DisplayReceivedItemPopups(Choice):
 | |
|     """
 | |
|     What messages to display in-game for items received
 | |
|     """
 | |
|     display_name = "Display Received Item Popups"
 | |
|     option_none = 0
 | |
|     option_all = 1
 | |
|     option_progression = 2
 | |
|     default = 2
 | |
| 
 | |
| 
 | |
| class TrapFillPercentage(Range):
 | |
|     """
 | |
|     Replace a percentage of junk items in the item pool with random traps
 | |
|     """
 | |
|     display_name = "Trap Fill Percentage"
 | |
|     range_start = 0
 | |
|     range_end = 100
 | |
|     default = 0
 | |
| 
 | |
| 
 | |
| class BaseTrapWeight(Choice):
 | |
|     """
 | |
|     Base Class for Trap Weights
 | |
|     """
 | |
|     option_none = 0
 | |
|     option_low = 1
 | |
|     option_medium = 2
 | |
|     option_high = 4
 | |
|     default = 2
 | |
| 
 | |
| 
 | |
| class IceTrapWeight(BaseTrapWeight):
 | |
|     """
 | |
|     Likelihood of a receiving a trap which causes the level to become slippery
 | |
|     """
 | |
|     display_name = "Ice Trap Weight"
 | |
| 
 | |
| 
 | |
| class StunTrapWeight(BaseTrapWeight):
 | |
|     """
 | |
|     Likelihood of a receiving a trap which briefly stuns Mario
 | |
|     """
 | |
|     display_name = "Stun Trap Weight"
 | |
| 
 | |
| 
 | |
| class LiteratureTrapWeight(BaseTrapWeight):
 | |
|     """
 | |
|     Likelihood of a receiving a trap which causes the player to read literature
 | |
|     """
 | |
|     display_name = "Literature Trap Weight"
 | |
| 
 | |
| 
 | |
| class Autosave(DefaultOnToggle):
 | |
|     """
 | |
|     Whether a save prompt will appear after every level
 | |
|     """
 | |
|     display_name = "Autosave"
 | |
| 
 | |
| 
 | |
| class MusicShuffle(Choice):
 | |
|     """
 | |
|     Music shuffle type
 | |
|     None: No Music is shuffled
 | |
|     Consistent: Each music track is consistently shuffled throughout the game
 | |
|     Full: Each individual level has a random music track
 | |
|     Singularity: The entire game uses one song for overworld and one song for levels
 | |
|     """
 | |
|     display_name = "Music Shuffle"
 | |
|     option_none = 0
 | |
|     option_consistent = 1
 | |
|     option_full = 2
 | |
|     option_singularity = 3
 | |
|     default = 0
 | |
| 
 | |
| 
 | |
| class MarioPalette(Choice):
 | |
|     """
 | |
|     Mario palette color
 | |
|     """
 | |
|     display_name = "Mario Palette"
 | |
|     option_mario = 0
 | |
|     option_luigi = 1
 | |
|     option_wario = 2
 | |
|     option_waluigi = 3
 | |
|     option_geno = 4
 | |
|     option_princess = 5
 | |
|     option_dark = 6
 | |
|     option_sponge = 7
 | |
|     default = 0
 | |
| 
 | |
| 
 | |
| class ForegroundPaletteShuffle(Toggle):
 | |
|     """
 | |
|     Whether to shuffle level foreground palettes
 | |
|     """
 | |
|     display_name = "Foreground Palette Shuffle"
 | |
| 
 | |
| 
 | |
| class BackgroundPaletteShuffle(Toggle):
 | |
|     """
 | |
|     Whether to shuffle level background palettes
 | |
|     """
 | |
|     display_name = "Background Palette Shuffle"
 | |
| 
 | |
| 
 | |
| class StartingLifeCount(Range):
 | |
|     """
 | |
|     How many extra lives to start the game with
 | |
|     """
 | |
|     display_name = "Starting Life Count"
 | |
|     range_start = 1
 | |
|     range_end = 99
 | |
|     default = 5
 | |
| 
 | |
| 
 | |
| 
 | |
| smw_options: typing.Dict[str, type(Option)] = {
 | |
|     "death_link": DeathLink,
 | |
|     "goal": Goal,
 | |
|     "bosses_required": BossesRequired,
 | |
|     "number_of_yoshi_eggs": NumberOfYoshiEggs,
 | |
|     "percentage_of_yoshi_eggs": PercentageOfYoshiEggs,
 | |
|     "dragon_coin_checks": DragonCoinChecks,
 | |
|     "bowser_castle_doors": BowserCastleDoors,
 | |
|     "level_shuffle": LevelShuffle,
 | |
|     "swap_donut_gh_exits": SwapDonutGhostHouseExits,
 | |
|     #"display_sent_item_popups": DisplaySentItemPopups,
 | |
|     "display_received_item_popups": DisplayReceivedItemPopups,
 | |
|     "trap_fill_percentage": TrapFillPercentage,
 | |
|     "ice_trap_weight": IceTrapWeight,
 | |
|     "stun_trap_weight": StunTrapWeight,
 | |
|     "literature_trap_weight": LiteratureTrapWeight,
 | |
|     "autosave": Autosave,
 | |
|     "music_shuffle": MusicShuffle,
 | |
|     "mario_palette": MarioPalette,
 | |
|     "foreground_palette_shuffle": ForegroundPaletteShuffle,
 | |
|     "background_palette_shuffle": BackgroundPaletteShuffle,
 | |
|     "starting_life_count": StartingLifeCount,
 | |
| }
 |