| 
									
										
										
										
											2021-08-29 08:30:44 -07:00
										 |  |  | import typing | 
					
						
							| 
									
										
										
										
											2024-07-31 12:27:35 -04:00
										 |  |  | from dataclasses import dataclass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from Options import TextChoice, Range, Toggle, PerGameCommonOptions | 
					
						
							| 
									
										
										
										
											2021-08-29 08:30:44 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-08 20:14:54 -08:00
										 |  |  | class Character(TextChoice): | 
					
						
							|  |  |  |     """Enter the internal ID of the character to use.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if you don't know the exact ID to enter with the mod installed go to | 
					
						
							|  |  |  |      `Mods -> Archipelago Multi-world -> config` to view a list of installed modded character IDs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |      the downfall characters will only work if you have downfall installed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |      Spire Take the Wheel will have your client pick a random character from the list of all your installed characters | 
					
						
							|  |  |  |      including custom ones. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |      if the chosen character mod is not installed it will default back to 'The Ironclad' | 
					
						
							|  |  |  |      """
 | 
					
						
							| 
									
										
										
										
											2021-08-29 08:30:44 -07:00
										 |  |  |     display_name = "Character" | 
					
						
							| 
									
										
										
										
											2023-03-08 20:14:54 -08:00
										 |  |  |     option_The_Ironclad = 0 | 
					
						
							|  |  |  |     option_The_Silent = 1 | 
					
						
							|  |  |  |     option_The_Defect = 2 | 
					
						
							|  |  |  |     option_The_Watcher = 3 | 
					
						
							|  |  |  |     option_The_Hermit = 4 | 
					
						
							|  |  |  |     option_The_Slime_Boss = 5 | 
					
						
							|  |  |  |     option_The_Guardian = 6 | 
					
						
							|  |  |  |     option_The_Hexaghost = 7 | 
					
						
							|  |  |  |     option_The_Champ = 8 | 
					
						
							|  |  |  |     option_The_Gremlins = 9 | 
					
						
							|  |  |  |     option_The_Automaton = 10 | 
					
						
							|  |  |  |     option_The_Snecko = 11 | 
					
						
							|  |  |  |     option_spire_take_the_wheel = 12 | 
					
						
							| 
									
										
										
										
											2021-08-29 08:30:44 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Ascension(Range): | 
					
						
							|  |  |  |     """What Ascension do you wish to play with.""" | 
					
						
							|  |  |  |     display_name = "Ascension" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 20 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-08 20:14:54 -08:00
										 |  |  | class FinalAct(Toggle): | 
					
						
							|  |  |  |     """Whether you will need to collect the 3 keys and beat the final act to complete the game.""" | 
					
						
							|  |  |  |     display_name = "Final Act" | 
					
						
							|  |  |  |     option_true = 1 | 
					
						
							|  |  |  |     option_false = 0 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Downfall(Toggle): | 
					
						
							|  |  |  |     """When Downfall is Installed this will switch the played mode to Downfall""" | 
					
						
							|  |  |  |     display_name = "Downfall" | 
					
						
							| 
									
										
										
										
											2021-08-29 08:30:44 -07:00
										 |  |  |     option_true = 1 | 
					
						
							|  |  |  |     option_false = 0 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-31 12:27:35 -04:00
										 |  |  | class DeathLink(Range): | 
					
						
							|  |  |  |     """Percentage of health to lose when a death link is received.""" | 
					
						
							|  |  |  |     display_name = "Death Link %" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @dataclass | 
					
						
							|  |  |  | class SpireOptions(PerGameCommonOptions): | 
					
						
							|  |  |  |     character: Character | 
					
						
							|  |  |  |     ascension: Ascension | 
					
						
							|  |  |  |     final_act: FinalAct | 
					
						
							|  |  |  |     downfall: Downfall | 
					
						
							|  |  |  |     death_link: DeathLink |