Files
dockipelago/worlds/khddd/Options.py
Jonathan Tinney 7971961166
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
add schedule I, sonic 1/frontiers/heroes, spirit island
2026-04-02 23:46:36 -07:00

285 lines
7.9 KiB
Python

#Blank options file; not ready for customization yet
from dataclasses import dataclass
from Options import Choice, Toggle, PerGameCommonOptions, StartInventoryPool, NamedRange, Range
class StartingWorlds(Range):
"""
Number of random worlds to start with
"""
display_name = "Starting Worlds"
default = 1
range_start = 1
range_end = 10
class Character(Choice):
"""
Determines whether to play as Sora, Riku, or Both
0: Both
1: Sora Only
2: Riku Only
"""
display_name = "Character"
default = 0
option_both = 0
option_sora = 1
option_riku = 2
class Goal(Choice):
"""
Win Condition
0: Defeat the Final Boss (Xemnas for Sora and Young Xehanort for Riku
1: Defeat All Superbosses (Secret Portals and Julius)
"""
display_name = "Goal"
default = 0
option_final_boss = 0
option_superbosses = 1
class AVN(Toggle):
"""
If enabled, the win condition for the Final Boss goal is moved to AVN instead of Young Xehanort
This is ignored if the goal is Superbosses or the player chooses Sora as their character
"""
display_name = "Armored Ventus Nightmare"
class RecipeReqs(Range):
"""
Number of Recipes needed to beat the game
Meow Wow and Komory Bat recipes are always required
"""
display_name = "Recipes Required"
default = 2
range_start = 2
range_end = 54
class RecipesInPool(Range):
"""
Number of Recipes in the Item Pool
Always includes Meow Wow and Komory Bat recipes
"""
display_name = "Recipes in the Item Pool"
default = 54
range_start = 2
range_end = 54
class Superbosses(Toggle):
"""
Determines whether Secret Portals and Julius are checks
This option is ignored if the Goal is Superbosses
"""
class LordKyroo(Toggle):
display_name = "Lord Kyroo"
"""
Determines whether fighting Lord Kyroo is needed for checks.
Each unique location he can be fought grants a check, as well
as granting an additional check for defeating him.
"""
default = True
#####################################
#########Quality of Life#############
#####################################
class ExpMultiplier(Range):
"""
Determines the multiplier to apply to EXP gained
"""
display_name = "Exp Multiplier"
default = 2
range_start = 1
range_end = 10
class StatBonusAmount(Range):
"""
Determines how many points each stat increase grants.
Only applies to Strength, Defense, and Magic increases.
"""
display_name = "Stat Bonus Amount"
default = 2
range_start = 1
range_end = 5
class StrengthInPool(Range):
"""
Determines how many strength increases per character are in the item pool.
Does nothing if Stats On Levels is enabled.
"""
display_name = "Strength in Pool"
default = 18
range_start = 0
range_end = 50
class MagicInPool(Range):
"""
Determines how many magic increases per character are in the item pool.
Does nothing if Stats On Levels is enabled.
"""
display_name = "Magic in Pool"
default = 18
range_start = 0
range_end = 50
class DefenseInPool(Range):
"""
Determines how many defense increases per character are in the item pool.
Does nothing if Stats On Levels is enabled.
"""
display_name = "Defense in Pool"
default = 15
range_start = 0
range_end = 50
class PlayDestinyIslands(Toggle):
"""
Allows you to play the Ursula battle at the start of the run.
This grants 5 additional checks.
Does nothing if the player chooses Riku as their character.
NOTE: Need to connect to the server during the intro cutscene
with Braig in order for this to take effect.
"""
display_name = "Play Ursula Battle"
class SkipLightCycle(Toggle):
"""
Allows you to skip the Light Cycle section of Riku's Grid.
Skipping will still grant the check for clearing the Light Cycle minigame.
Does nothing if the player chooses Sora as their character.
"""
display_name = "Skip Light Cycle"
default = True
class FastGoMode(Toggle):
"""
When enabled, the save point for Young Xehanort is
activated after collecting the necessary key items,
allowing you to do the final fight instantly without
having to play the entirety of The World That Never Was.
Does nothing if the goal is Superbosses or the player
chooses Sora as their character.
"""
display_name = "Fast Go Mode"
#####################################
##########Extra Features#############
#####################################
class RandomizeKeybladeStats(Toggle):
"""
Determines if Keyblade stats should be randomized
"""
display_name = "Randomize Keyblade Stats"
class KeybladeMinStrength(Range):
"""
Determines the minimum Strength bonus a keyblade can have
"""
display_name = "Keyblade Minimum Strength"
default = 2
range_start = 0
range_end = 10
class KeybladeMaxStrength(Range):
"""
Determines the maximum Strength bonus a keyblade can have
"""
display_name = "Keyblade Maximum Strength"
default = 18
range_start = 11
range_end = 18
class KeybladeMinMagic(Range):
"""
Determines the minimum Magic bonus a keyblade can have
"""
display_name = "Keyblade Minimum Magic"
default = 2
range_start = 0
range_end = 10
class KeybladeMaxMagic(Range):
"""
Determines the maximum Magic bonus a keyblade can have
"""
display_name = "Keyblade Maximum Magic"
default = 16
range_start = 11
range_end = 18
class InstantDropTrapChance(Range):
"""
Determines the % chance a filler item gets replaced by an instant drop trap.
"""
display_name = "Instant Drop Trap Chance"
default = 0
range_start = 0
range_end = 25
class StatsOnLevels(Toggle):
"""
Determines whether level checks contain only stat increases.
"""
display_name = "Stats On Levels"
class SingleFlowmotion(Toggle):
"""
If enabled, all flowmotion is obtained as a single item
"""
display_name = "Flowmotion is One Item"
class ReceivedItemNotifications(Choice):
"""
Determine how received item notifications are handled
0: Display a notification for every received item
1: Display a notification for received progressive items only
2: Do not display received item notifications
"""
display_name = "Local Item Notifications"
default = 0
option_display_received_all = 0
option_display_received_progressive = 1
option_display_received_none = 2
class SentItemNotifications(Choice):
"""
Determine how sent item notifications are handled
0: Display a notification for every sent item
1: Display a notification for sent progressive items only
2: Do not display sent item notifications
"""
display_name = "Sent Item Notifications"
default = 0
option_display_sent_all = 0
option_display_sent_progressive = 1
option_display_sent_none = 2
@dataclass
class KHDDDOptions(PerGameCommonOptions):
character: Character
goal: Goal
armored_ventus_nightmare: AVN
recipe_reqs: RecipeReqs
recipes_in_pool: RecipesInPool
starting_worlds: StartingWorlds
superbosses: Superbosses
lord_kyroo: LordKyroo
play_destiny_islands: PlayDestinyIslands
skip_light_cycle: SkipLightCycle
fast_go_mode: FastGoMode
exp_multiplier: ExpMultiplier
stat_bonus: StatBonusAmount
strength_in_pool: StrengthInPool
magic_in_pool: MagicInPool
defense_in_pool: DefenseInPool
randomize_keyblade_stats: RandomizeKeybladeStats
keyblade_min_str: KeybladeMinStrength
keyblade_max_str: KeybladeMaxStrength
keyblade_min_mag: KeybladeMinMagic
keyblade_max_mag: KeybladeMaxMagic
instant_drop_trap_chance: InstantDropTrapChance
stats_on_levels: StatsOnLevels
single_flowmotion: SingleFlowmotion
received_notifications: ReceivedItemNotifications
sent_notifications: SentItemNotifications
start_inventory_from_pool: StartInventoryPool