Super Mario 64: Option groups (#4161)

* sm64ex: add option groups

* sm64ex: rename sanity options group to item options

* sm64ex: rename sanity options group to logic options

* sm64ex: seperate star costs from goal options and add entrance rando to logic options

* sm64ex: seperate ability options from logic options group
This commit is contained in:
josephwhite 2024-11-28 19:45:26 -05:00 committed by GitHub
parent 1ba7700283
commit faeb54224e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 30 additions and 2 deletions

View File

@ -1,6 +1,6 @@
import typing import typing
from dataclasses import dataclass from dataclasses import dataclass
from Options import DefaultOnToggle, Range, Toggle, DeathLink, Choice, PerGameCommonOptions, OptionSet from Options import DefaultOnToggle, Range, Toggle, DeathLink, Choice, PerGameCommonOptions, OptionSet, OptionGroup
from .Items import action_item_table from .Items import action_item_table
class EnableCoinStars(DefaultOnToggle): class EnableCoinStars(DefaultOnToggle):
@ -127,6 +127,32 @@ class MoveRandomizerActions(OptionSet):
valid_keys = [action for action in action_item_table if action != 'Double Jump'] valid_keys = [action for action in action_item_table if action != 'Double Jump']
default = valid_keys default = valid_keys
sm64_options_groups = [
OptionGroup("Logic Options", [
AreaRandomizer,
BuddyChecks,
ExclamationBoxes,
ProgressiveKeys,
EnableCoinStars,
StrictCapRequirements,
StrictCannonRequirements,
]),
OptionGroup("Ability Options", [
EnableMoveRandomizer,
MoveRandomizerActions,
StrictMoveRequirements,
]),
OptionGroup("Star Options", [
AmountOfStars,
FirstBowserStarDoorCost,
BasementStarDoorCost,
SecondFloorStarDoorCost,
MIPS1Cost,
MIPS2Cost,
StarsToFinish,
]),
]
@dataclass @dataclass
class SM64Options(PerGameCommonOptions): class SM64Options(PerGameCommonOptions):
area_rando: AreaRandomizer area_rando: AreaRandomizer

View File

@ -3,7 +3,7 @@ import os
import json import json
from .Items import item_table, action_item_table, cannon_item_table, SM64Item from .Items import item_table, action_item_table, cannon_item_table, SM64Item
from .Locations import location_table, SM64Location from .Locations import location_table, SM64Location
from .Options import SM64Options from .Options import sm64_options_groups, SM64Options
from .Rules import set_rules from .Rules import set_rules
from .Regions import create_regions, sm64_level_to_entrances, SM64Levels from .Regions import create_regions, sm64_level_to_entrances, SM64Levels
from BaseClasses import Item, Tutorial, ItemClassification, Region from BaseClasses import Item, Tutorial, ItemClassification, Region
@ -20,6 +20,8 @@ class SM64Web(WebWorld):
["N00byKing"] ["N00byKing"]
)] )]
option_groups = sm64_options_groups
class SM64World(World): class SM64World(World):
""" """