DKC3: Option Groups (#3322)

* DKC3: Option Groups

* Retarget OptionGroup import
This commit is contained in:
PoryGone 2024-05-21 18:19:37 -04:00 committed by GitHub
parent 61be79b7ea
commit a1c2e8715e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 43 additions and 15 deletions

View File

@ -1,13 +1,15 @@
from dataclasses import dataclass from dataclasses import dataclass
import typing 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): class Goal(Choice):
""" """
Determines the goal of the seed Determines the goal of the seed
Knautilus: Scuttle the Knautilus in Krematoa and defeat Baron K. Roolenstein 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 Banana Bird Hunt: Find a certain number of Banana Birds and rescue their mother
""" """
display_name = "Goal" display_name = "Goal"
@ -26,6 +28,7 @@ class IncludeTradeSequence(Toggle):
class DKCoinsForGyrocopter(Range): class DKCoinsForGyrocopter(Range):
""" """
How many DK Coins are needed to unlock the Gyrocopter 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 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 one-time upgrade to the next non-unlocked boat, until you return to Funky. Logic does not assume
that you will use this. that you will use this.
@ -93,6 +96,7 @@ class LevelShuffle(Toggle):
class Difficulty(Choice): class Difficulty(Choice):
""" """
Which Difficulty Level to use Which Difficulty Level to use
NORML: The Normal Difficulty NORML: The Normal Difficulty
HARDR: Many DK Barrels are removed HARDR: Many DK Barrels are removed
TUFST: Most DK Barrels and all Midway Barrels are removed TUFST: Most DK Barrels and all Midway Barrels are removed
@ -159,19 +163,40 @@ class StartingLifeCount(Range):
default = 5 default = 5
dkc3_option_groups = [
OptionGroup("Goal Options", [
Goal,
KrematoaBonusCoinCost,
PercentageOfExtraBonusCoins,
NumberOfBananaBirds,
PercentageOfBananaBirds,
]),
OptionGroup("Aesthetics", [
Autosave,
MERRY,
MusicShuffle,
KongPaletteSwap,
StartingLifeCount,
]),
]
@dataclass @dataclass
class DKC3Options(PerGameCommonOptions): class DKC3Options(PerGameCommonOptions):
#death_link: DeathLink # Disabled #death_link: DeathLink # Disabled
goal: Goal
#include_trade_sequence: IncludeTradeSequence # Disabled #include_trade_sequence: IncludeTradeSequence # Disabled
dk_coins_for_gyrocopter: DKCoinsForGyrocopter
goal: Goal
krematoa_bonus_coin_cost: KrematoaBonusCoinCost krematoa_bonus_coin_cost: KrematoaBonusCoinCost
percentage_of_extra_bonus_coins: PercentageOfExtraBonusCoins percentage_of_extra_bonus_coins: PercentageOfExtraBonusCoins
number_of_banana_birds: NumberOfBananaBirds number_of_banana_birds: NumberOfBananaBirds
percentage_of_banana_birds: PercentageOfBananaBirds percentage_of_banana_birds: PercentageOfBananaBirds
dk_coins_for_gyrocopter: DKCoinsForGyrocopter
kongsanity: KONGsanity kongsanity: KONGsanity
level_shuffle: LevelShuffle level_shuffle: LevelShuffle
difficulty: Difficulty difficulty: Difficulty
autosave: Autosave autosave: Autosave
merry: MERRY merry: MERRY
music_shuffle: MusicShuffle music_shuffle: MusicShuffle

View File

@ -4,20 +4,21 @@ import typing
import math import math
import threading import threading
import settings
from BaseClasses import Item, MultiWorld, Tutorial, ItemClassification from BaseClasses import Item, MultiWorld, Tutorial, ItemClassification
from Options import PerGameCommonOptions 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 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): class DK3Settings(settings.Group):
@ -44,6 +45,8 @@ class DKC3Web(WebWorld):
tutorials = [setup_en] tutorials = [setup_en]
option_groups = dkc3_option_groups
class DKC3World(World): class DKC3World(World):
""" """