| 
									
										
										
										
											2023-11-08 18:35:12 -05:00
										 |  |  | from dataclasses import dataclass | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-31 01:56:35 -05:00
										 |  |  | from Options import Toggle, Choice, DefaultOnToggle, Range, PerGameCommonOptions, StartInventoryPool | 
					
						
							| 
									
										
										
										
											2023-11-08 18:35:12 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-16 07:11:20 -05:00
										 |  |  | class ProgressiveColorful(DefaultOnToggle): | 
					
						
							|  |  |  |     """When "Shuffle Doors" is on "complex", this setting governs the manner in which The Colorful opens up.
 | 
					
						
							|  |  |  |     If off, there is an item for each room of The Colorful, meaning that random rooms in the middle of the sequence can open up without giving you access to them. | 
					
						
							|  |  |  |     If on, there are ten progressive items, which open up the sequence from White forward."""
 | 
					
						
							|  |  |  |     display_name = "Progressive Colorful" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-08 18:35:12 -05:00
										 |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-03 18:06:11 -05:00
										 |  |  | class ShuffleColors(DefaultOnToggle): | 
					
						
							| 
									
										
										
										
											2023-11-08 18:35:12 -05:00
										 |  |  |     """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): | 
					
						
							| 
									
										
										
										
											2023-11-25 07:09:08 -05:00
										 |  |  |     """Change the victory condition.
 | 
					
						
							|  |  |  |     On "the_end", the goal is to solve THE END at the top of the tower. | 
					
						
							|  |  |  |     On "the_master", the goal is to solve THE MASTER at the top of the tower, after getting the number of achievements specified in the Mastery Achievements option. | 
					
						
							|  |  |  |     On "level_2", the goal is to solve LEVEL 2 in the second room, after solving the number of panels specified in the Level 2 Requirement option."""
 | 
					
						
							| 
									
										
										
										
											2023-11-08 18:35:12 -05:00
										 |  |  |     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. | 
					
						
							| 
									
										
										
										
											2023-11-25 07:09:08 -05:00
										 |  |  |     When set to 1, the panel hunt is disabled, and you can access LEVEL 2 for free. | 
					
						
							| 
									
										
										
										
											2023-11-08 18:35:12 -05:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Level 2 Requirement" | 
					
						
							| 
									
										
										
										
											2023-11-25 07:09:08 -05:00
										 |  |  |     range_start = 1 | 
					
						
							| 
									
										
										
										
											2023-11-08 18:35:12 -05:00
										 |  |  |     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 | 
					
						
							| 
									
										
										
										
											2024-01-16 07:11:20 -05:00
										 |  |  |     progressive_colorful: ProgressiveColorful | 
					
						
							| 
									
										
										
										
											2023-11-08 18:35:12 -05:00
										 |  |  |     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 | 
					
						
							| 
									
										
										
										
											2024-01-31 01:56:35 -05:00
										 |  |  |     start_inventory_from_pool: StartInventoryPool |