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
|