2023-06-27 02:35:41 +00:00
|
|
|
import typing
|
|
|
|
from Options import Choice, Option, Toggle, Range
|
|
|
|
|
|
|
|
|
|
|
|
class RouteRequired(Choice):
|
|
|
|
"""Main route of the game required to win."""
|
|
|
|
display_name = "Required Route"
|
|
|
|
option_neutral = 0
|
|
|
|
option_pacifist = 1
|
|
|
|
option_genocide = 2
|
|
|
|
option_all_routes = 3
|
|
|
|
default = 0
|
|
|
|
|
|
|
|
|
2023-08-16 14:02:01 +00:00
|
|
|
class StartingArea(Choice):
|
|
|
|
"""Which area to start with access to."""
|
|
|
|
display_name = "Starting Area"
|
|
|
|
option_ruins = 0
|
|
|
|
option_snowdin = 1
|
|
|
|
option_waterfall = 2
|
|
|
|
option_hotland = 3
|
|
|
|
option_core = 4
|
|
|
|
default = 0
|
|
|
|
|
|
|
|
|
2023-06-27 02:35:41 +00:00
|
|
|
class IncludeTemy(Toggle):
|
|
|
|
"""Adds Temmy Armor to the item pool."""
|
|
|
|
display_name = "Include Temy Armor"
|
|
|
|
default = 1
|
|
|
|
|
|
|
|
|
|
|
|
class KeyPieces(Range):
|
|
|
|
"""How many Key Pieces are added to the pool, only matters with Key Piece Hunt enabled."""
|
|
|
|
display_name = "Key Piece Amount"
|
|
|
|
default = 5
|
|
|
|
range_start = 1
|
|
|
|
range_end = 10
|
|
|
|
|
|
|
|
|
|
|
|
class KeyHunt(Toggle):
|
|
|
|
"""Adds Key Pieces to the item pool, you need all of them to enter the last corridor."""
|
|
|
|
display_name = "Key Piece Hunt"
|
|
|
|
default = 0
|
|
|
|
|
|
|
|
|
|
|
|
class ProgressiveArmor(Toggle):
|
|
|
|
"""Makes the armor progressive."""
|
|
|
|
display_name = "Progressive Armor"
|
|
|
|
default = 0
|
|
|
|
|
|
|
|
|
|
|
|
class ProgressiveWeapons(Toggle):
|
|
|
|
"""Makes the weapons progressive."""
|
|
|
|
display_name = "Progressive Weapons"
|
|
|
|
default = 0
|
|
|
|
|
|
|
|
|
|
|
|
class OnlyFlakes(Toggle):
|
|
|
|
"""Replaces all non-required items, except equipment, with Temmie Flakes."""
|
|
|
|
display_name = "Only Temmie Flakes"
|
|
|
|
default = 0
|
|
|
|
|
|
|
|
|
|
|
|
class NoEquips(Toggle):
|
|
|
|
"""Removes all equippable items."""
|
|
|
|
display_name = "No Equippables"
|
|
|
|
default = 0
|
|
|
|
|
|
|
|
|
|
|
|
class RandomizeLove(Toggle):
|
2023-07-22 05:38:21 +00:00
|
|
|
"""Adds LOVE to the pool. Only matters if your goal includes Genocide route"""
|
2023-06-27 02:35:41 +00:00
|
|
|
display_name = "Randomize LOVE"
|
|
|
|
default = 0
|
|
|
|
|
|
|
|
|
|
|
|
class RandomizeStats(Toggle):
|
2023-07-22 05:38:21 +00:00
|
|
|
"""Makes each stat increase from LV a separate item. Only matters if your goal includes Genocide route
|
2023-06-27 02:35:41 +00:00
|
|
|
Warning: This tends to spam chat with sending out checks."""
|
|
|
|
display_name = "Randomize Stats"
|
|
|
|
default = 0
|
|
|
|
|
|
|
|
|
|
|
|
class RandoBattleOptions(Toggle):
|
|
|
|
"""Turns the ITEM button in battle into an item you have to receive."""
|
|
|
|
display_name = "Randomize Item Button"
|
|
|
|
default = 0
|
|
|
|
|
|
|
|
|
|
|
|
undertale_options: typing.Dict[str, type(Option)] = {
|
|
|
|
"route_required": RouteRequired,
|
2023-08-16 14:02:01 +00:00
|
|
|
"starting_area": StartingArea,
|
2023-06-27 02:35:41 +00:00
|
|
|
"key_hunt": KeyHunt,
|
|
|
|
"key_pieces": KeyPieces,
|
|
|
|
"rando_love": RandomizeLove,
|
|
|
|
"rando_stats": RandomizeStats,
|
|
|
|
"temy_include": IncludeTemy,
|
|
|
|
"no_equips": NoEquips,
|
|
|
|
"only_flakes": OnlyFlakes,
|
|
|
|
"prog_armor": ProgressiveArmor,
|
|
|
|
"prog_weapons": ProgressiveWeapons,
|
|
|
|
"rando_item_button": RandoBattleOptions,
|
|
|
|
}
|