| 
									
										
										
										
											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, \ | 
					
						
							| 
									
										
										
										
											2025-09-14 00:11:21 -04:00
										 |  |  |     PerGameCommonOptions, OptionSet | 
					
						
							| 
									
										
										
										
											2025-07-25 19:33:51 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2025-09-20 15:48:40 -04:00
										 |  |  |     display_name = "Progressive Vacuum Tubes" | 
					
						
							| 
									
										
										
										
											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-09-27 16:11:10 -04:00
										 |  |  | class ExcludeEnvironments(OptionSet): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Allows entire environments to be an excluded location to ensure you are not logically required to enter the environment along | 
					
						
							| 
									
										
										
										
											2025-10-03 16:50:06 -04:00
										 |  |  |     with any and all checks that are in that environment too. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     WARNING: Excluding too many environments may cause generation to fail. | 
					
						
							| 
									
										
										
										
											2025-09-27 16:11:10 -04:00
										 |  |  |     [NOT IMPLEMENTED] | 
					
						
							| 
									
										
										
										
											2025-09-14 00:11:21 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-27 16:11:10 -04:00
										 |  |  |     Valid keys: "Whoville", "Who Forest", "Who Dump", "Who Lake", "Post Office", "Clock Tower", "City Hall", | 
					
						
							| 
									
										
										
										
											2025-09-14 00:11:21 -04:00
										 |  |  |                   "Ski Resort", "Civic Center", "Minefield", "Power Plant", "Generator Building", "Scout's Hut", | 
					
						
							|  |  |  |                   "North Shore", "Mayor's Villa", "Sleigh Ride" | 
					
						
							| 
									
										
										
										
											2025-09-27 16:11:10 -04:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Exclude Environments" | 
					
						
							| 
									
										
										
										
											2025-09-14 00:17:32 -04:00
										 |  |  |     valid_keys = {"Whoville", "Who Forest", "Who Dump", "Who Lake", "Post Office", "Clock Tower", "City Hall", | 
					
						
							| 
									
										
										
										
											2025-09-14 00:11:21 -04:00
										 |  |  |                   "Ski Resort", "Civic Center", "Minefield", "Power Plant", "Generator Building", "Scout's Hut", | 
					
						
							|  |  |  |                   "North Shore", "Mayor's Villa", "Sleigh Ride"} | 
					
						
							| 
									
										
										
										
											2025-08-08 18:27:22 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-07 22:49:14 -04:00
										 |  |  | class ProgressiveGadget(Toggle):#DefaultOnToggle | 
					
						
							| 
									
										
										
										
											2025-08-04 23:03:31 -04:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2025-09-14 00:11:21 -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): | 
					
						
							| 
									
										
										
										
											2025-09-14 00:11:21 -04:00
										 |  |  |     """Enables completing minigames through the Supadows in Mount Crumpit as checks. NOT IMPLEMENTED]""" | 
					
						
							|  |  |  |     display_name = "Supadow Minigames" | 
					
						
							| 
									
										
										
										
											2025-07-25 19:33:51 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-14 00:11:21 -04:00
										 |  |  | class Gifts(Range): | 
					
						
							| 
									
										
										
										
											2025-09-27 16:11:10 -04:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     Considers how many gifts must be squashed per check. | 
					
						
							| 
									
										
										
										
											2025-10-03 16:44:34 -04:00
										 |  |  |     Enabling this will also enable squashing all gifts in a region mission along side this. [NOT IMPLEMENTED] | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2025-09-27 16:11:10 -04:00
										 |  |  |     display_name = "Gifts Squashed per Check" | 
					
						
							| 
									
										
										
										
											2025-09-14 00:11:21 -04:00
										 |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 300 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-10-04 23:50:29 -04:00
										 |  |  | class Moverando(Toggle): | 
					
						
							| 
									
										
										
										
											2025-09-27 16:11:10 -04:00
										 |  |  |     """Randomizes Grinch's moveset along with randomizing max into the pool. [NOT IMPLEMENTED]
 | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Moves Randomized" | 
					
						
							| 
									
										
										
										
											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-09-14 00:11:21 -04:00
										 |  |  |     display_name = "Ring Link" | 
					
						
							| 
									
										
										
										
											2025-08-03 18:40:12 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | class TrapLinkOption(Toggle): | 
					
						
							| 
									
										
										
										
											2025-09-14 00:11:21 -04:00
										 |  |  |     """If a trap is sent from Grinch, traps that are compatible with other games are triggered as well. [NOT IMPLEMENTED]""" | 
					
						
							|  |  |  |     display_name = "Trap Link" | 
					
						
							| 
									
										
										
										
											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-09-27 16:11:10 -04:00
										 |  |  |     exclude_environments: ExcludeEnvironments | 
					
						
							| 
									
										
										
										
											2025-08-15 22:03:33 -04:00
										 |  |  |     progressive_gadget: ProgressiveGadget | 
					
						
							|  |  |  |     supadow_minigames: Supadow | 
					
						
							| 
									
										
										
										
											2025-08-04 23:03:31 -04:00
										 |  |  |     giftsanity: Gifts | 
					
						
							| 
									
										
										
										
											2025-09-27 16:11:10 -04:00
										 |  |  |     move_rando: Moverando | 
					
						
							| 
									
										
										
										
											2025-08-15 22:03:33 -04:00
										 |  |  |     unlimited_eggs: UnlimitedEggs | 
					
						
							|  |  |  |     ring_link: RingLinkOption | 
					
						
							|  |  |  |     trap_link: TrapLinkOption |