| 
									
										
										
										
											2024-03-05 18:55:56 -05:00
										 |  |  | from dataclasses import dataclass | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-21 18:22:39 -04:00
										 |  |  | from Options import Choice, Range, Toggle, DeathLink, OptionGroup, PerGameCommonOptions | 
					
						
							| 
									
										
										
										
											2024-03-05 18:55:56 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DeathLinkAmnesty(Range): | 
					
						
							| 
									
										
										
										
											2024-05-05 02:58:49 -04:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     How many deaths it takes to send a DeathLink | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-05 18:55:56 -05:00
										 |  |  |     display_name = "Death Link Amnesty" | 
					
						
							|  |  |  |     range_start = 1 | 
					
						
							|  |  |  |     range_end = 30 | 
					
						
							|  |  |  |     default = 10 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-05 02:58:49 -04:00
										 |  |  | class TotalStrawberries(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     How many Strawberries exist | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Total Strawberries" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 46 | 
					
						
							|  |  |  |     default = 20 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class StrawberriesRequiredPercentage(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Percentage of existing Strawberries you must receive to finish | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Strawberries Required Percentage" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     default = 80 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class LogicDifficulty(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Whether the logic expects you to play the intended way, or to be able to use advanced tricks and skips | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Logic Difficulty" | 
					
						
							|  |  |  |     option_standard = 0 | 
					
						
							|  |  |  |     option_hard = 1 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MoveShuffle(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Whether the following base movement abilities are shuffled into the item pool: | 
					
						
							|  |  |  |     - Ground Dash | 
					
						
							|  |  |  |     - Air Dash | 
					
						
							|  |  |  |     - Skid Jump | 
					
						
							|  |  |  |     - Climb | 
					
						
							| 
									
										
										
										
											2024-05-21 18:22:39 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-05 02:58:49 -04:00
										 |  |  |     NOTE: Having Move Shuffle and Standard Logic Difficulty will guarantee that one of the four Move items will be immediately accessible | 
					
						
							| 
									
										
										
										
											2024-05-21 18:22:39 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-05 02:58:49 -04:00
										 |  |  |     WARNING: Combining Move Shuffle and Hard Logic Difficulty can require very difficult tricks | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Move Shuffle" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Friendsanity(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Whether chatting with your friends grants location checks | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Friendsanity" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Signsanity(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Whether reading signs grants location checks | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Signsanity" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Carsanity(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Whether riding on cars grants location checks | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Carsanity" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BadelineChaserSource(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     What type of action causes more Badeline Chasers to start spawning | 
					
						
							| 
									
										
										
										
											2024-05-21 18:22:39 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-05 02:58:49 -04:00
										 |  |  |     Locations: The number of locations you've checked contributes to Badeline Chasers | 
					
						
							| 
									
										
										
										
											2024-05-21 18:22:39 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-05 02:58:49 -04:00
										 |  |  |     Strawberries: The number of Strawberry items you've received contributes to Badeline Chasers | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Badeline Chaser Source" | 
					
						
							|  |  |  |     option_locations = 0 | 
					
						
							|  |  |  |     option_strawberries = 1 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BadelineChaserFrequency(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     How many of the `Badeline Chaser Source` actions must occur to make each Badeline Chaser start spawning | 
					
						
							| 
									
										
										
										
											2024-05-21 18:22:39 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-05 02:58:49 -04:00
										 |  |  |     NOTE: Choosing `0` disables Badeline Chasers entirely | 
					
						
							| 
									
										
										
										
											2024-05-21 18:22:39 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-05 02:58:49 -04:00
										 |  |  |     WARNING: Turning on Badeline Chasers alongside Move Shuffle could result in extremely difficult situations | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Badeline Chaser Frequency" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 10 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BadelineChaserSpeed(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     How many seconds behind you each Badeline Chaser will be | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Badeline Chaser Speed" | 
					
						
							|  |  |  |     range_start = 2 | 
					
						
							|  |  |  |     range_end = 10 | 
					
						
							|  |  |  |     default = 3 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-05 18:55:56 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-21 18:22:39 -04:00
										 |  |  | celeste_64_option_groups = [ | 
					
						
							|  |  |  |     OptionGroup("Goal Options", [ | 
					
						
							|  |  |  |         TotalStrawberries, | 
					
						
							|  |  |  |         StrawberriesRequiredPercentage, | 
					
						
							|  |  |  |     ]), | 
					
						
							|  |  |  |     OptionGroup("Sanity Options", [ | 
					
						
							|  |  |  |         Friendsanity, | 
					
						
							|  |  |  |         Signsanity, | 
					
						
							|  |  |  |         Carsanity, | 
					
						
							|  |  |  |     ]), | 
					
						
							|  |  |  |     OptionGroup("Badeline Chasers", [ | 
					
						
							|  |  |  |         BadelineChaserSource, | 
					
						
							|  |  |  |         BadelineChaserFrequency, | 
					
						
							|  |  |  |         BadelineChaserSpeed, | 
					
						
							|  |  |  |     ]), | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-05 18:55:56 -05:00
										 |  |  | @dataclass | 
					
						
							|  |  |  | class Celeste64Options(PerGameCommonOptions): | 
					
						
							|  |  |  |     death_link: DeathLink | 
					
						
							|  |  |  |     death_link_amnesty: DeathLinkAmnesty | 
					
						
							| 
									
										
										
										
											2024-05-05 02:58:49 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     total_strawberries: TotalStrawberries | 
					
						
							|  |  |  |     strawberries_required_percentage: StrawberriesRequiredPercentage | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     logic_difficulty: LogicDifficulty | 
					
						
							|  |  |  |     move_shuffle: MoveShuffle | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     friendsanity: Friendsanity | 
					
						
							|  |  |  |     signsanity: Signsanity | 
					
						
							|  |  |  |     carsanity: Carsanity | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     badeline_chaser_source: BadelineChaserSource | 
					
						
							|  |  |  |     badeline_chaser_frequency: BadelineChaserFrequency | 
					
						
							|  |  |  |     badeline_chaser_speed: BadelineChaserSpeed |