| 
									
										
										
										
											2025-07-25 19:33:51 -04:00
										 |  |  | from dataclasses import dataclass | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-25 19:33:51 -04:00
										 |  |  | from Options import FreeText, NumericOption, Toggle, DefaultOnToggle, Choice, TextChoice, Range, NamedRange, OptionList, \ | 
					
						
							|  |  |  |     PerGameCommonOptions | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-07 22:49:14 -04:00
										 |  |  | class StartingArea(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2025-08-15 22:03:33 -04:00
										 |  |  |     Here, you can select which area you'll start the game with. [NOT IMPLEMENTED] | 
					
						
							| 
									
										
										
										
											2025-08-07 22:49:14 -04:00
										 |  |  |     Whichever one you pick is the region you'll have access to at the start of the Multiworld. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     option_whoville = 0 | 
					
						
							|  |  |  |     option_who_forest = 1 | 
					
						
							|  |  |  |     option_who_dump = 2 | 
					
						
							|  |  |  |     option_who_lake = 3 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     display_name = "Starting Area" | 
					
						
							| 
									
										
										
										
											2025-07-25 19:33:51 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-03 19:43:54 -04:00
										 |  |  | class ProgressiveVacuum(Toggle):#DefaultOnToggle | 
					
						
							| 
									
										
										
										
											2025-07-25 19:33:51 -04:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2025-08-03 18:40:12 -04:00
										 |  |  |     Determines whether you get access to main areas progressively [NOT IMPLEMENTED] | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     Enabled: Whoville > Who Forest > Who Dump > Who Lake | 
					
						
							| 
									
										
										
										
											2025-07-25 19:33:51 -04:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Progressive Vacuum Access" | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  | class Missionsanity(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2025-08-03 18:40:12 -04:00
										 |  |  |     How mission checks are randomized in the pool [NOT IMPLEMENTED] | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     None: Does not add mission checks | 
					
						
							|  |  |  |     Completion: Only completing the mission gives you a check | 
					
						
							|  |  |  |     Individual: Individual tasks for one mission, such as individual snowmen squashed, are checks. | 
					
						
							|  |  |  |     Both: Both individual tasks and mission completion are randomized. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Mission Locations" | 
					
						
							|  |  |  |     option_none = 0 | 
					
						
							|  |  |  |     option_completion = 1 | 
					
						
							|  |  |  |     option_individual = 2 | 
					
						
							|  |  |  |     option_both = 3 | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-19 02:00:33 -04:00
										 |  |  | class AnnoyingLocations(DefaultOnToggle): | 
					
						
							| 
									
										
										
										
											2025-08-08 18:27:22 -04:00
										 |  |  |     """Makes certain long, annoying, and tedious checks to be excluded [NOT IMPLEMENTED]""" | 
					
						
							|  |  |  |     display_name = "Annoying Locations" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-07 22:49:14 -04:00
										 |  |  | class ProgressiveGadget(Toggle):#DefaultOnToggle | 
					
						
							| 
									
										
										
										
											2025-08-04 23:03:31 -04:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2025-08-07 22:49:14 -04:00
										 |  |  |     Determines whether you get access to a gadget as individual blueprint count [NOT IMPLEMENTED] | 
					
						
							| 
									
										
										
										
											2025-08-04 23:03:31 -04:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2025-08-07 22:49:14 -04:00
										 |  |  |     display_name = "Progressive Gadgets" | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-04 23:03:31 -04:00
										 |  |  | class Supadow(Toggle): | 
					
						
							|  |  |  |     """Enables completing minigames through the Supadows in Mount Crumpit as checks. (9 locations) [NOT IMPLEMENTED]""" | 
					
						
							| 
									
										
										
										
											2025-08-14 00:21:15 -04:00
										 |  |  |     display_name = "Supadow Minigame Locations" | 
					
						
							| 
									
										
										
										
											2025-07-25 19:33:51 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-04 23:03:31 -04:00
										 |  |  | class Gifts(Toggle): | 
					
						
							|  |  |  |     """Missions that require you to squash every present in a level. (4 locations) [NOT IMPLEMENTED]""" | 
					
						
							|  |  |  |     display_name = "Gift Collection Locations" | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-04 23:03:31 -04:00
										 |  |  | class Movesanity(Toggle): | 
					
						
							|  |  |  |     """Randomizes Grinch's moveset along with randomizing max into the pool. [NOT IMPLEMENTED]""" | 
					
						
							|  |  |  |     display_name = "Movesanity" | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-14 00:21:15 -04:00
										 |  |  | class UnlimitedEggs(Toggle): | 
					
						
							|  |  |  |     """Determine whether or not you run out of rotten eggs when you utilize your gadgets.""" | 
					
						
							| 
									
										
										
										
											2025-07-25 19:33:51 -04:00
										 |  |  |     display_name = "Unlimited Rotten Eggs" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-03 13:39:32 -04:00
										 |  |  | class RingLinkOption(Toggle): | 
					
						
							| 
									
										
										
										
											2025-09-09 00:04:09 -04:00
										 |  |  |     """Whenever this is toggled, your ammo is linked with other ringlink-compatible games that also have this enabled.""" | 
					
						
							| 
									
										
										
										
											2025-08-03 18:40:12 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | class TrapLinkOption(Toggle): | 
					
						
							|  |  |  |     """If a trap is sent from Grinch, traps that are compatible with other games are triggered aswell. [NOT IMPLEMENTED]""" | 
					
						
							| 
									
										
										
										
											2025-08-03 13:39:32 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-25 19:33:51 -04:00
										 |  |  | @dataclass | 
					
						
							|  |  |  | class GrinchOptions(PerGameCommonOptions):#DeathLinkMixin | 
					
						
							| 
									
										
										
										
											2025-08-15 22:03:33 -04:00
										 |  |  |     starting_area: StartingArea | 
					
						
							| 
									
										
										
										
											2025-07-25 19:33:51 -04:00
										 |  |  |     progressive_vacuum: ProgressiveVacuum | 
					
						
							| 
									
										
										
										
											2025-07-26 17:34:43 -04:00
										 |  |  |     missionsanity: Missionsanity | 
					
						
							| 
									
										
										
										
											2025-08-17 00:17:58 -04:00
										 |  |  |     annoying_locations: AnnoyingLocations | 
					
						
							| 
									
										
										
										
											2025-08-15 22:03:33 -04:00
										 |  |  |     progressive_gadget: ProgressiveGadget | 
					
						
							|  |  |  |     supadow_minigames: Supadow | 
					
						
							| 
									
										
										
										
											2025-08-04 23:03:31 -04:00
										 |  |  |     giftsanity: Gifts | 
					
						
							|  |  |  |     movesanity: Movesanity | 
					
						
							| 
									
										
										
										
											2025-08-15 22:03:33 -04:00
										 |  |  |     unlimited_eggs: UnlimitedEggs | 
					
						
							|  |  |  |     ring_link: RingLinkOption | 
					
						
							|  |  |  |     trap_link: TrapLinkOption |