summary refs log tree commit diff stats
path: root/options.py
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2023-11-08 18:35:12 -0500
committerGitHub <noreply@github.com>2023-11-08 17:35:12 -0600
commitbbbbc71bee25cfd22c5304f98f5a7881383585a3 (patch)
treed27581db7b8db03da4b731fe8c2d5072d3162cf8 /options.py
downloadlingo-apworld-bbbbc71bee25cfd22c5304f98f5a7881383585a3.tar.gz
lingo-apworld-bbbbc71bee25cfd22c5304f98f5a7881383585a3.tar.bz2
lingo-apworld-bbbbc71bee25cfd22c5304f98f5a7881383585a3.zip
Lingo: New game (#1806)
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: Phar <zach@alliware.com>
Diffstat (limited to 'options.py')
-rw-r--r--options.py126
1 files changed, 126 insertions, 0 deletions
diff --git a/options.py b/options.py new file mode 100644 index 0000000..7dc6a13 --- /dev/null +++ b/options.py
@@ -0,0 +1,126 @@
1from dataclasses import dataclass
2
3from Options import Toggle, Choice, DefaultOnToggle, Range, PerGameCommonOptions
4
5
6class ShuffleDoors(Choice):
7 """If on, opening doors will require their respective "keys".
8 In "simple", doors are sorted into logical groups, which are all opened by receiving an item.
9 In "complex", the items are much more granular, and will usually only open a single door each."""
10 display_name = "Shuffle Doors"
11 option_none = 0
12 option_simple = 1
13 option_complex = 2
14
15
16class ProgressiveOrangeTower(DefaultOnToggle):
17 """When "Shuffle Doors" is on, this setting governs the manner in which the Orange Tower floors open up.
18 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.
19 If on, there are six progressive items, which open up the tower from the bottom floor upward.
20 """
21 display_name = "Progressive Orange Tower"
22
23
24class LocationChecks(Choice):
25 """On "normal", there will be a location check for each panel set that would ordinarily open a door, as well as for
26 achievement panels and a small handful of other panels.
27 On "reduced", many of the locations that are associated with opening doors are removed.
28 On "insanity", every individual panel in the game is a location check."""
29 display_name = "Location Checks"
30 option_normal = 0
31 option_reduced = 1
32 option_insanity = 2
33
34
35class ShuffleColors(Toggle):
36 """If on, an item is added to the pool for every puzzle color (besides White).
37 You will need to unlock the requisite colors in order to be able to solve puzzles of that color."""
38 display_name = "Shuffle Colors"
39
40
41class ShufflePanels(Choice):
42 """If on, the puzzles on each panel are randomized.
43 On "rearrange", the puzzles are the same as the ones in the base game, but are placed in different areas."""
44 display_name = "Shuffle Panels"
45 option_none = 0
46 option_rearrange = 1
47
48
49class ShufflePaintings(Toggle):
50 """If on, the destination, location, and appearance of the painting warps in the game will be randomized."""
51 display_name = "Shuffle Paintings"
52
53
54class VictoryCondition(Choice):
55 """Change the victory condition."""
56 display_name = "Victory Condition"
57 option_the_end = 0
58 option_the_master = 1
59 option_level_2 = 2
60
61
62class MasteryAchievements(Range):
63 """The number of achievements required to unlock THE MASTER.
64 In the base game, 21 achievements are needed.
65 If you include The Scientific and The Unchallenged, which are in the base game but are not counted for mastery, 23 would be required.
66 If you include the custom achievement (The Wanderer), 24 would be required.
67 """
68 display_name = "Mastery Achievements"
69 range_start = 1
70 range_end = 24
71 default = 21
72
73
74class Level2Requirement(Range):
75 """The number of panel solves required to unlock LEVEL 2.
76 In the base game, 223 are needed.
77 Note that this count includes ANOTHER TRY.
78 """
79 display_name = "Level 2 Requirement"
80 range_start = 2
81 range_end = 800
82 default = 223
83
84
85class EarlyColorHallways(Toggle):
86 """When on, a painting warp to the color hallways area will appear in the starting room.
87 This lets you avoid being trapped in the starting room for long periods of time when door shuffle is on."""
88 display_name = "Early Color Hallways"
89
90
91class TrapPercentage(Range):
92 """Replaces junk items with traps, at the specified rate."""
93 display_name = "Trap Percentage"
94 range_start = 0
95 range_end = 100
96 default = 20
97
98
99class PuzzleSkipPercentage(Range):
100 """Replaces junk items with puzzle skips, at the specified rate."""
101 display_name = "Puzzle Skip Percentage"
102 range_start = 0
103 range_end = 100
104 default = 20
105
106
107class DeathLink(Toggle):
108 """If on: Whenever another player on death link dies, you will be returned to the starting room."""
109 display_name = "Death Link"
110
111
112@dataclass
113class LingoOptions(PerGameCommonOptions):
114 shuffle_doors: ShuffleDoors
115 progressive_orange_tower: ProgressiveOrangeTower
116 location_checks: LocationChecks
117 shuffle_colors: ShuffleColors
118 shuffle_panels: ShufflePanels
119 shuffle_paintings: ShufflePaintings
120 victory_condition: VictoryCondition
121 mastery_achievements: MasteryAchievements
122 level_2_requirement: Level2Requirement
123 early_color_hallways: EarlyColorHallways
124 trap_percentage: TrapPercentage
125 puzzle_skip_percentage: PuzzleSkipPercentage
126 death_link: DeathLink