| 
									
										
										
										
											2022-01-23 21:34:30 +01:00
										 |  |  | import typing | 
					
						
							| 
									
										
										
										
											2022-07-25 18:39:31 +02:00
										 |  |  | from Options import Option, DefaultOnToggle, Range, Toggle, DeathLink, Choice | 
					
						
							| 
									
										
										
										
											2022-01-23 21:34:30 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | class EnableCoinStars(DefaultOnToggle): | 
					
						
							|  |  |  |     """Disable to Ignore 100 Coin Stars. You can still collect them, but they don't do anything""" | 
					
						
							| 
									
										
										
										
											2022-02-02 16:29:29 +01:00
										 |  |  |     display_name = "Enable 100 Coin Stars" | 
					
						
							| 
									
										
										
										
											2022-01-23 21:34:30 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | class StrictCapRequirements(DefaultOnToggle): | 
					
						
							|  |  |  |     """If disabled, Stars that expect special caps may have to be acquired without the caps""" | 
					
						
							| 
									
										
										
										
											2022-02-02 16:29:29 +01:00
										 |  |  |     display_name = "Strict Cap Requirements" | 
					
						
							| 
									
										
										
										
											2022-01-23 21:34:30 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-15 19:56:10 +01:00
										 |  |  | class StrictCannonRequirements(DefaultOnToggle): | 
					
						
							|  |  |  |     """If disabled, Stars that expect cannons may have to be acquired without them. Only makes a difference if Buddy Checks are enabled""" | 
					
						
							|  |  |  |     display_name = "Strict Cannon Requirements" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-14 18:37:14 +02:00
										 |  |  | class FirstBowserStarDoorCost(Range): | 
					
						
							|  |  |  |     """How many stars are required at the Star Door to Bowser in the Dark World""" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							| 
									
										
										
										
											2022-07-25 18:39:31 +02:00
										 |  |  |     range_end = 50 | 
					
						
							| 
									
										
										
										
											2022-07-14 18:37:14 +02:00
										 |  |  |     default = 8 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BasementStarDoorCost(Range): | 
					
						
							|  |  |  |     """How many stars are required at the Star Door in the Basement""" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							| 
									
										
										
										
											2022-07-25 18:39:31 +02:00
										 |  |  |     range_end = 70 | 
					
						
							| 
									
										
										
										
											2022-07-14 18:37:14 +02:00
										 |  |  |     default = 30 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SecondFloorStarDoorCost(Range): | 
					
						
							|  |  |  |     """How many stars are required to access the third floor""" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							| 
									
										
										
										
											2022-07-25 18:39:31 +02:00
										 |  |  |     range_end = 90 | 
					
						
							|  |  |  |     default = 50 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MIPS1Cost(Range): | 
					
						
							|  |  |  |     """How many stars are required to spawn MIPS the first time""" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 40 | 
					
						
							|  |  |  |     default = 15 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MIPS2Cost(Range): | 
					
						
							|  |  |  |     """How many stars are required to spawn MIPS the secound time. Must be bigger or equal MIPS1Cost""" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 80 | 
					
						
							| 
									
										
										
										
											2022-07-14 18:37:14 +02:00
										 |  |  |     default = 50 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-23 21:34:30 +01:00
										 |  |  | class StarsToFinish(Range): | 
					
						
							|  |  |  |     """How many stars are required at the infinite stairs""" | 
					
						
							| 
									
										
										
										
											2022-07-14 18:37:14 +02:00
										 |  |  |     display_name = "Endless Stairs Stars" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							| 
									
										
										
										
											2022-01-23 21:34:30 +01:00
										 |  |  |     range_end = 100 | 
					
						
							|  |  |  |     default = 70 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-25 18:39:31 +02:00
										 |  |  | class AmountOfStars(Range): | 
					
						
							|  |  |  |     """How many stars exist. Disabling 100 Coin Stars removes 15 from the Pool. At least max of any Cost set""" | 
					
						
							|  |  |  |     range_start = 35 | 
					
						
							|  |  |  |     range_end = 120 | 
					
						
							|  |  |  |     default = 120 | 
					
						
							| 
									
										
										
										
											2022-01-30 19:12:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-25 18:39:31 +02:00
										 |  |  | class AreaRandomizer(Choice): | 
					
						
							|  |  |  |     """Randomize Entrances""" | 
					
						
							|  |  |  |     display_name = "Entrance Randomizer" | 
					
						
							|  |  |  |     alias_false = 0 | 
					
						
							|  |  |  |     option_Off = 0 | 
					
						
							|  |  |  |     option_Courses_Only = 1 | 
					
						
							|  |  |  |     option_Courses_and_Secrets = 2 | 
					
						
							| 
									
										
										
										
											2022-02-09 20:57:38 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-15 19:56:10 +01:00
										 |  |  | class BuddyChecks(Toggle): | 
					
						
							|  |  |  |     """Bob-omb Buddies are checks, Cannon Unlocks are items""" | 
					
						
							|  |  |  |     display_name = "Bob-omb Buddy Checks" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-21 20:45:39 +02:00
										 |  |  | class ExclamationBoxes(Choice): | 
					
						
							|  |  |  |     """Include 1Up Exclamation Boxes during randomization""" | 
					
						
							|  |  |  |     display_name = "Randomize 1Up !-Blocks" | 
					
						
							|  |  |  |     option_Off = 0 | 
					
						
							|  |  |  |     option_1Ups_Only = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-09 20:57:38 +01:00
										 |  |  | class ProgressiveKeys(DefaultOnToggle): | 
					
						
							|  |  |  |     """Keys will first grant you access to the Basement, then to the Secound Floor""" | 
					
						
							|  |  |  |     display_name = "Progressive Keys" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-23 21:34:30 +01:00
										 |  |  | sm64_options: typing.Dict[str,type(Option)] = { | 
					
						
							| 
									
										
										
										
											2022-02-09 20:57:38 +01:00
										 |  |  |     "AreaRandomizer": AreaRandomizer, | 
					
						
							|  |  |  |     "ProgressiveKeys": ProgressiveKeys, | 
					
						
							| 
									
										
										
										
											2022-01-23 21:34:30 +01:00
										 |  |  |     "EnableCoinStars": EnableCoinStars, | 
					
						
							| 
									
										
										
										
											2022-07-25 18:39:31 +02:00
										 |  |  |     "AmountOfStars": AmountOfStars, | 
					
						
							| 
									
										
										
										
											2022-01-23 21:34:30 +01:00
										 |  |  |     "StrictCapRequirements": StrictCapRequirements, | 
					
						
							| 
									
										
										
										
											2022-02-15 19:56:10 +01:00
										 |  |  |     "StrictCannonRequirements": StrictCannonRequirements, | 
					
						
							| 
									
										
										
										
											2022-07-14 18:37:14 +02:00
										 |  |  |     "FirstBowserStarDoorCost": FirstBowserStarDoorCost, | 
					
						
							|  |  |  |     "BasementStarDoorCost": BasementStarDoorCost, | 
					
						
							|  |  |  |     "SecondFloorStarDoorCost": SecondFloorStarDoorCost, | 
					
						
							| 
									
										
										
										
											2022-07-25 18:39:31 +02:00
										 |  |  |     "MIPS1Cost": MIPS1Cost, | 
					
						
							|  |  |  |     "MIPS2Cost": MIPS2Cost, | 
					
						
							| 
									
										
										
										
											2022-01-30 19:12:52 +01:00
										 |  |  |     "StarsToFinish": StarsToFinish, | 
					
						
							| 
									
										
										
										
											2022-05-25 19:53:36 +02:00
										 |  |  |     "death_link": DeathLink, | 
					
						
							| 
									
										
										
										
											2022-02-15 19:56:10 +01:00
										 |  |  |     "BuddyChecks": BuddyChecks, | 
					
						
							| 
									
										
										
										
											2022-08-21 20:45:39 +02:00
										 |  |  |     "ExclamationBoxes": ExclamationBoxes | 
					
						
							| 
									
										
										
										
											2022-01-23 21:34:30 +01:00
										 |  |  | }  |