| 
									
										
										
										
											2022-03-18 00:30:47 -03:00
										 |  |  | # Copyright (c) 2022 FelicitusNeko | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # This software is released under the MIT License. | 
					
						
							|  |  |  | # https://opensource.org/licenses/MIT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-12 12:52:34 -04:00
										 |  |  | from dataclasses import dataclass | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-18 00:30:47 -03:00
										 |  |  | import typing | 
					
						
							| 
									
										
										
										
											2024-05-12 12:52:34 -04:00
										 |  |  | from Options import Option, DeathLink, Toggle, DefaultOnToggle, Choice, PerGameCommonOptions | 
					
						
							| 
									
										
										
										
											2022-03-18 00:30:47 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cost_scales = { | 
					
						
							|  |  |  |     0: [80, 5, 4], | 
					
						
							|  |  |  |     1: [60, 5, 3], | 
					
						
							|  |  |  |     2: [50, 4, 3] | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Goal(Choice): | 
					
						
							|  |  |  |     """Which goal must be achieved to trigger completion.""" | 
					
						
							|  |  |  |     display_name = "Goal" | 
					
						
							|  |  |  |     option_return_the_cursed_seal = 0 | 
					
						
							|  |  |  |     option_any_ending = 1 | 
					
						
							|  |  |  |     option_true_ending = 2 | 
					
						
							|  |  |  |     alias_normal_ending = 1 | 
					
						
							|  |  |  |     alias_agate_knife = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class IncludePSIKeys(DefaultOnToggle): | 
					
						
							|  |  |  |     """Whether PSI Keys should be included in the multiworld pool. If not, they will be in their vanilla locations.""" | 
					
						
							|  |  |  |     display_name = "Include PSI Keys" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class IncludeEvolutionTraps(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |         Whether evolution traps should be included in the multiworld pool. | 
					
						
							|  |  |  |         If not, they will be activated by bosses, as in vanilla. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Include Evolution Traps" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ItemCacheCost(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |         Determines how the cost for Alpha, Beta, and Gamma caches will scale. | 
					
						
							|  |  |  |         Vanilla has a total cost of about 1B crystals on Normal difficulty; | 
					
						
							|  |  |  |         Reduced has about 750M; and Heavily Reduced has about 600M. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Item cache cost scaling" | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_reduced = 1 | 
					
						
							|  |  |  |     option_heavily_reduced = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-12 12:52:34 -04:00
										 |  |  | @dataclass | 
					
						
							|  |  |  | class MeritousOptions(PerGameCommonOptions): | 
					
						
							|  |  |  |     goal: Goal | 
					
						
							|  |  |  |     include_psi_keys: IncludePSIKeys | 
					
						
							|  |  |  |     include_evolution_traps: IncludeEvolutionTraps | 
					
						
							|  |  |  |     item_cache_cost: ItemCacheCost | 
					
						
							|  |  |  |     death_link: DeathLink |