import typing from Options import Choice, Range, Option, Toggle, DeathLink, DefaultOnToggle, OptionList 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" option_knautilus = 0 option_banana_bird_hunt = 1 default = 0 class IncludeTradeSequence(Toggle): """ Allows logic to place items at the various steps of the trade sequence """ display_name = "Include Trade Sequence" 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. """ display_name = "DK Coins for Gyrocopter" range_start = 10 range_end = 41 default = 30 class KrematoaBonusCoinCost(Range): """ How many Bonus Coins are needed to unlock each level in Krematoa """ display_name = "Krematoa Bonus Coins Cost" range_start = 1 range_end = 17 default = 15 class PercentageOfExtraBonusCoins(Range): """ What Percentage of unneeded Bonus Coins are included in the item pool """ display_name = "Percentage of Extra Bonus Coins" range_start = 0 range_end = 100 default = 100 class NumberOfBananaBirds(Range): """ How many Banana Birds are put into the item pool """ display_name = "Number of Banana Birds" range_start = 5 range_end = 15 default = 15 class PercentageOfBananaBirds(Range): """ What Percentage of Banana Birds in the item pool are required for Banana Bird Hunt """ display_name = "Percentage of Banana Birds" range_start = 20 range_end = 100 default = 100 class KONGsanity(Toggle): """ Whether collecting all four KONG letters in each level grants a check """ display_name = "KONGsanity" class LevelShuffle(Toggle): """ Whether levels are shuffled """ display_name = "Level Shuffle" 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 """ display_name = "Difficulty" option_norml = 0 option_hardr = 1 option_tufst = 2 default = 0 @classmethod def get_option_name(cls, value) -> str: if cls.auto_display_name: return cls.name_lookup[value].upper() else: return cls.name_lookup[value] class Autosave(DefaultOnToggle): """ Whether the game should autosave after each level """ display_name = "Autosave" class MERRY(Toggle): """ Whether the Bonus Barrels will be Christmas-themed """ display_name = "MERRY" class MusicShuffle(Toggle): """ Whether music is shuffled """ display_name = "Music Shuffle" class KongPaletteSwap(Choice): """ Which Palette to use for the Kongs """ display_name = "Kong Palette Swap" option_default = 0 option_purple = 1 option_spooky = 2 option_dark = 3 option_chocolate = 4 option_shadow = 5 option_red_gold = 6 option_gbc = 7 option_halloween = 8 default = 0 class StartingLifeCount(Range): """ How many extra lives to start the game with """ display_name = "Starting Life Count" range_start = 1 range_end = 99 default = 5 dkc3_options: typing.Dict[str, type(Option)] = { #"death_link": DeathLink, # Disabled "goal": Goal, #"include_trade_sequence": IncludeTradeSequence, # Disabled "dk_coins_for_gyrocopter": DKCoinsForGyrocopter, "krematoa_bonus_coin_cost": KrematoaBonusCoinCost, "percentage_of_extra_bonus_coins": PercentageOfExtraBonusCoins, "number_of_banana_birds": NumberOfBananaBirds, "percentage_of_banana_birds": PercentageOfBananaBirds, "kongsanity": KONGsanity, "level_shuffle": LevelShuffle, "difficulty": Difficulty, "autosave": Autosave, "merry": MERRY, "music_shuffle": MusicShuffle, "kong_palette_swap": KongPaletteSwap, "starting_life_count": StartingLifeCount, }