127 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			127 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | 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 |