| 
									
										
										
										
											2024-04-18 10:40:53 -06:00
										 |  |  | from dataclasses import dataclass | 
					
						
							| 
									
										
										
										
											2024-05-14 13:35:32 -05:00
										 |  |  | from Options import Choice, Removed, Toggle, DefaultOnToggle, DeathLink, PerGameCommonOptions | 
					
						
							| 
									
										
										
										
											2022-10-12 23:51:25 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-21 15:53:00 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-12 23:51:25 -06:00
										 |  |  | class PartyShuffle(Toggle): | 
					
						
							| 
									
										
										
										
											2024-05-21 15:53:00 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     Shuffles party members into the item pool. | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     Note that enabling this can significantly increase both the difficulty and length of a run. | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2022-10-12 23:51:25 -06:00
										 |  |  |     display_name = "Shuffle Party Members" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-21 15:53:00 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-12 23:51:25 -06:00
										 |  |  | class GestureShuffle(Choice): | 
					
						
							| 
									
										
										
										
											2024-05-21 15:53:00 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     Choose where gestures will appear in the item pool. | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2022-10-12 23:51:25 -06:00
										 |  |  |     display_name = "Shuffle Gestures" | 
					
						
							|  |  |  |     option_anywhere = 0 | 
					
						
							|  |  |  |     option_tvs_only = 1 | 
					
						
							|  |  |  |     option_default_locations = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-21 15:53:00 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-12 23:51:25 -06:00
										 |  |  | class MedallionShuffle(Toggle): | 
					
						
							| 
									
										
										
										
											2024-05-21 15:53:00 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     Shuffles red medallions into the item pool. | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2022-10-12 23:51:25 -06:00
										 |  |  |     display_name = "Shuffle Red Medallions" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-21 15:53:00 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-14 13:35:32 -05:00
										 |  |  | class StartLocation(Choice): | 
					
						
							| 
									
										
										
										
											2024-05-21 15:53:00 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     Select the starting location from 1 of 4 positions. | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-05-14 13:35:32 -05:00
										 |  |  |     display_name = "Start Location" | 
					
						
							|  |  |  |     option_waynehouse = 0 | 
					
						
							|  |  |  |     option_viewaxs_edifice = 1 | 
					
						
							|  |  |  |     option_tv_island = 2 | 
					
						
							|  |  |  |     option_shield_facility = 3 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def get_option_name(cls, value: int) -> str: | 
					
						
							|  |  |  |         if value == 1: | 
					
						
							|  |  |  |             return "Viewax's Edifice" | 
					
						
							|  |  |  |         if value == 2: | 
					
						
							|  |  |  |             return "TV Island" | 
					
						
							|  |  |  |         return super().get_option_name(value) | 
					
						
							| 
									
										
										
										
											2022-10-12 23:51:25 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-21 15:53:00 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-12 23:51:25 -06:00
										 |  |  | class ExtraLogic(DefaultOnToggle): | 
					
						
							| 
									
										
										
										
											2024-05-21 15:53:00 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     Include some extra items in logic (CHARGE UP, 1x PAPER CUP) to prevent the game from becoming too difficult. | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2022-10-12 23:51:25 -06:00
										 |  |  |     display_name = "Extra Items in Logic" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-21 15:53:00 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-12 23:51:25 -06:00
										 |  |  | class Hylics2DeathLink(DeathLink): | 
					
						
							| 
									
										
										
										
											2024-05-21 15:53:00 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     When you die, everyone dies. The reverse is also true. | 
					
						
							|  |  |  |      | 
					
						
							| 
									
										
										
										
											2022-10-12 23:51:25 -06:00
										 |  |  |     Note that this also includes death by using the PERISH gesture. | 
					
						
							| 
									
										
										
										
											2024-05-21 15:53:00 -06:00
										 |  |  |      | 
					
						
							|  |  |  |     Can be toggled via in-game console command "/deathlink". | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-12 23:51:25 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-18 10:40:53 -06:00
										 |  |  | @dataclass | 
					
						
							|  |  |  | class Hylics2Options(PerGameCommonOptions): | 
					
						
							|  |  |  |     party_shuffle: PartyShuffle | 
					
						
							|  |  |  |     gesture_shuffle: GestureShuffle | 
					
						
							|  |  |  |     medallion_shuffle: MedallionShuffle | 
					
						
							| 
									
										
										
										
											2024-05-14 13:35:32 -05:00
										 |  |  |     start_location: StartLocation | 
					
						
							| 
									
										
										
										
											2024-04-18 10:40:53 -06:00
										 |  |  |     extra_items_in_logic: ExtraLogic | 
					
						
							| 
									
										
										
										
											2024-05-14 13:35:32 -05:00
										 |  |  |     death_link: Hylics2DeathLink | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Removed options | 
					
						
							|  |  |  |     random_start: Removed |