From bbbbc71bee25cfd22c5304f98f5a7881383585a3 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 8 Nov 2023 18:35:12 -0500 Subject: Lingo: New game (#1806) Co-authored-by: Aaron Wagener Co-authored-by: Fabian Dill Co-authored-by: Phar --- options.py | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 options.py (limited to 'options.py') diff --git a/options.py b/options.py new file mode 100644 index 0000000..7dc6a13 --- /dev/null +++ b/options.py @@ -0,0 +1,126 @@ +from dataclasses import dataclass + +from Options import Toggle, Choice, DefaultOnToggle, Range, PerGameCommonOptions + + +class ShuffleDoors(Choice): + """If on, opening doors will require their respective "keys". + In "simple", doors are sorted into logical groups, which are all opened by receiving an item. + In "complex", the items are much more granular, and will usually only open a single door each.""" + display_name = "Shuffle Doors" + option_none = 0 + option_simple = 1 + option_complex = 2 + + +class ProgressiveOrangeTower(DefaultOnToggle): + """When "Shuffle Doors" is on, this setting governs the manner in which the Orange Tower floors open up. + If off, there is an item for each floor of the tower, and each floor's item is the only one needed to access that floor. + If on, there are six progressive items, which open up the tower from the bottom floor upward. + """ + display_name = "Progressive Orange Tower" + + +class LocationChecks(Choice): + """On "normal", there will be a location check for each panel set that would ordinarily open a door, as well as for + achievement panels and a small handful of other panels. + On "reduced", many of the locations that are associated with opening doors are removed. + On "insanity", every individual panel in the game is a location check.""" + display_name = "Location Checks" + option_normal = 0 + option_reduced = 1 + option_insanity = 2 + + +class ShuffleColors(Toggle): + """If on, an item is added to the pool for every puzzle color (besides White). + You will need to unlock the requisite colors in order to be able to solve puzzles of that color.""" + display_name = "Shuffle Colors" + + +class ShufflePanels(Choice): + """If on, the puzzles on each panel are randomized. + On "rearrange", the puzzles are the same as the ones in the base game, but are placed in different areas.""" + display_name = "Shuffle Panels" + option_none = 0 + option_rearrange = 1 + + +class ShufflePaintings(Toggle): + """If on, the destination, location, and appearance of the painting warps in the game will be randomized.""" + display_name = "Shuffle Paintings" + + +class VictoryCondition(Choice): + """Change the victory condition.""" + display_name = "Victory Condition" + option_the_end = 0 + option_the_master = 1 + option_level_2 = 2 + + +class MasteryAchievements(Range): + """The number of achievements required to unlock THE MASTER. + In the base game, 21 achievements are needed. + If you include The Scientific and The Unchallenged, which are in the base game but are not counted for mastery, 23 would be required. + If you include the custom achievement (The Wanderer), 24 would be required. + """ + display_name = "Mastery Achievements" + range_start = 1 + range_end = 24 + default = 21 + + +class Level2Requirement(Range): + """The number of panel solves required to unlock LEVEL 2. + In the base game, 223 are needed. + Note that this count includes ANOTHER TRY. + """ + display_name = "Level 2 Requirement" + range_start = 2 + range_end = 800 + default = 223 + + +class EarlyColorHallways(Toggle): + """When on, a painting warp to the color hallways area will appear in the starting room. + This lets you avoid being trapped in the starting room for long periods of time when door shuffle is on.""" + display_name = "Early Color Hallways" + + +class TrapPercentage(Range): + """Replaces junk items with traps, at the specified rate.""" + display_name = "Trap Percentage" + range_start = 0 + range_end = 100 + default = 20 + + +class PuzzleSkipPercentage(Range): + """Replaces junk items with puzzle skips, at the specified rate.""" + display_name = "Puzzle Skip Percentage" + range_start = 0 + range_end = 100 + default = 20 + + +class DeathLink(Toggle): + """If on: Whenever another player on death link dies, you will be returned to the starting room.""" + display_name = "Death Link" + + +@dataclass +class LingoOptions(PerGameCommonOptions): + shuffle_doors: ShuffleDoors + progressive_orange_tower: ProgressiveOrangeTower + location_checks: LocationChecks + shuffle_colors: ShuffleColors + shuffle_panels: ShufflePanels + shuffle_paintings: ShufflePaintings + victory_condition: VictoryCondition + mastery_achievements: MasteryAchievements + level_2_requirement: Level2Requirement + early_color_hallways: EarlyColorHallways + trap_percentage: TrapPercentage + puzzle_skip_percentage: PuzzleSkipPercentage + death_link: DeathLink -- cgit 1.4.1