From a1c2e8715e4f4833a1ea48b6abe6f1a262035a31 Mon Sep 17 00:00:00 2001 From: PoryGone <98504756+PoryGone@users.noreply.github.com> Date: Tue, 21 May 2024 18:19:37 -0400 Subject: [PATCH] DKC3: Option Groups (#3322) * DKC3: Option Groups * Retarget OptionGroup import --- worlds/dkc3/Options.py | 31 ++++++++++++++++++++++++++++--- worlds/dkc3/__init__.py | 27 +++++++++++++++------------ 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/worlds/dkc3/Options.py b/worlds/dkc3/Options.py index 06be30cf..b114a503 100644 --- a/worlds/dkc3/Options.py +++ b/worlds/dkc3/Options.py @@ -1,13 +1,15 @@ from dataclasses import dataclass import typing -from Options import Choice, Range, Option, Toggle, DeathLink, DefaultOnToggle, OptionList, PerGameCommonOptions +from Options import Choice, Range, Toggle, DeathLink, DefaultOnToggle, OptionGroup, PerGameCommonOptions class Goal(Choice): """ Determines the goal of the seed + Knautilus: Scuttle the Knautilus in Krematoa and defeat Baron K. Roolenstein + Banana Bird Hunt: Find a certain number of Banana Birds and rescue their mother """ display_name = "Goal" @@ -26,6 +28,7 @@ class IncludeTradeSequence(Toggle): class DKCoinsForGyrocopter(Range): """ How many DK Coins are needed to unlock the Gyrocopter + Note: Achieving this number before unlocking the Turbo Ski will cause the game to grant you a one-time upgrade to the next non-unlocked boat, until you return to Funky. Logic does not assume that you will use this. @@ -93,6 +96,7 @@ class LevelShuffle(Toggle): class Difficulty(Choice): """ Which Difficulty Level to use + NORML: The Normal Difficulty HARDR: Many DK Barrels are removed TUFST: Most DK Barrels and all Midway Barrels are removed @@ -159,19 +163,40 @@ class StartingLifeCount(Range): default = 5 +dkc3_option_groups = [ + OptionGroup("Goal Options", [ + Goal, + KrematoaBonusCoinCost, + PercentageOfExtraBonusCoins, + NumberOfBananaBirds, + PercentageOfBananaBirds, + ]), + OptionGroup("Aesthetics", [ + Autosave, + MERRY, + MusicShuffle, + KongPaletteSwap, + StartingLifeCount, + ]), +] + + @dataclass class DKC3Options(PerGameCommonOptions): #death_link: DeathLink # Disabled - goal: Goal #include_trade_sequence: IncludeTradeSequence # Disabled - dk_coins_for_gyrocopter: DKCoinsForGyrocopter + + goal: Goal krematoa_bonus_coin_cost: KrematoaBonusCoinCost percentage_of_extra_bonus_coins: PercentageOfExtraBonusCoins number_of_banana_birds: NumberOfBananaBirds percentage_of_banana_birds: PercentageOfBananaBirds + + dk_coins_for_gyrocopter: DKCoinsForGyrocopter kongsanity: KONGsanity level_shuffle: LevelShuffle difficulty: Difficulty + autosave: Autosave merry: MERRY music_shuffle: MusicShuffle diff --git a/worlds/dkc3/__init__.py b/worlds/dkc3/__init__.py index b0e153dc..f2981149 100644 --- a/worlds/dkc3/__init__.py +++ b/worlds/dkc3/__init__.py @@ -4,20 +4,21 @@ import typing import math import threading -import settings from BaseClasses import Item, MultiWorld, Tutorial, ItemClassification from Options import PerGameCommonOptions -from .Items import DKC3Item, ItemData, item_table, inventory_table, junk_table -from .Locations import DKC3Location, all_locations, setup_locations -from .Options import DKC3Options -from .Regions import create_regions, connect_regions -from .Levels import level_list -from .Rules import set_rules -from .Names import ItemName, LocationName -from .Client import DKC3SNIClient -from worlds.AutoWorld import WebWorld, World -from .Rom import LocalRom, patch_rom, get_base_rom_path, DKC3DeltaPatch import Patch +import settings +from worlds.AutoWorld import WebWorld, World + +from .Client import DKC3SNIClient +from .Items import DKC3Item, ItemData, item_table, inventory_table, junk_table +from .Levels import level_list +from .Locations import DKC3Location, all_locations, setup_locations +from .Names import ItemName, LocationName +from .Options import DKC3Options, dkc3_option_groups +from .Regions import create_regions, connect_regions +from .Rom import LocalRom, patch_rom, get_base_rom_path, DKC3DeltaPatch +from .Rules import set_rules class DK3Settings(settings.Group): @@ -41,9 +42,11 @@ class DKC3Web(WebWorld): "setup/en", ["PoryGone"] ) - + tutorials = [setup_en] + option_groups = dkc3_option_groups + class DKC3World(World): """