Files
APSly3/Sly3Options.py
2025-12-13 21:53:24 +01:00

130 lines
2.4 KiB
Python

from Options import (
DeathLink,
StartInventoryPool,
PerGameCommonOptions,
Choice,
Toggle,
DefaultOnToggle,
Range,
OptionGroup
)
from dataclasses import dataclass
class StartingEpisode(Choice):
"""
Select Which episode to start with.
"""
display_name = "Starting Episode"
option_An_Opera_of_Fear = 0
option_Rumble_Down_Under = 1
option_Flight_of_Fancy = 2
option_A_Cold_Alliance = 3
option_Dead_Men_Tell_No_Tales = 4
default = 0
class Goal(Choice):
"""
Which boss you must defeat to goal.
"""
display_name = "Goal"
option_Don_Octavio = 0
option_Dark_Mask = 1
option_Black_Baron = 2
option_General_Tsao = 3
option_Captain_LeFwee = 4
option_Dr_M = 5
option_All_Bosses = 6
default = 5
class IncludeMegaJump(Toggle):
"""
Add the Mega Jump ability to the pool.
"""
display_name = "Include Mega Jump"
class CoinsMinimum(Range):
"""
The minimum number of coins you'll receive when you get a "Coins" filler
item.
"""
display_name = "Coins Minimum"
range_start = 0
range_end = 1000
default = 50
class CoinsMaximum(Range):
"""
The maximum number of coins you'll receive when you get a "Coins" filler
item.
"""
display_name = "Coins Maximum"
range_start = 0
range_end = 1000
default = 200
class ThiefNetLocations(Range):
"""
The number ThiefNet locations.
"""
display_name = "ThiefNet Locations"
range_start = 0
range_end = 37
default = 25
class ThiefNetCostMinimum(Range):
"""
The minimum number of coins items on ThiefNet will cost.
"""
display_name = "ThiefNet Cost Minimum"
range_start = 0
range_end = 9999
default = 200
class ThiefNetCostMaximum(Range):
"""
The maximum number of coins items on ThiefNet will cost.
"""
display_name = "ThiefNet Cost Maximum"
range_start = 0
range_end = 9999
default = 2000
@dataclass
class Sly3Options(PerGameCommonOptions):
start_inventory_from_pool: StartInventoryPool
death_link: DeathLink
starting_episode: StartingEpisode
goal: Goal
include_mega_jump: IncludeMegaJump
coins_minimum: CoinsMinimum
coins_maximum: CoinsMaximum
thiefnet_locations: ThiefNetLocations
thiefnet_minimum: ThiefNetCostMinimum
thiefnet_maximum: ThiefNetCostMaximum
sly3_option_groups = [
OptionGroup("Goal",[
Goal
]),
OptionGroup("Items",[
IncludeMegaJump,
CoinsMinimum,
CoinsMaximum
]),
OptionGroup("Locations",[
ThiefNetLocations,
ThiefNetCostMinimum,
ThiefNetCostMaximum
])
]