| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  | import typing | 
					
						
							| 
									
										
										
										
											2021-12-03 22:11:25 +01:00
										 |  |  | from Options import Choice, Range, OptionDict, OptionList, Option, Toggle, DefaultOnToggle | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | class StartItemsRemovesFromPool(Toggle): | 
					
						
							|  |  |  |     displayname = "StartItems Removes From Item Pool" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Preset(Choice): | 
					
						
							|  |  |  |     """choose one of the preset or specify "varia_custom" to use varia_custom_preset option or specify "custom" to use custom_preset option""" | 
					
						
							|  |  |  |     displayname = "Preset" | 
					
						
							|  |  |  |     option_newbie = 0 | 
					
						
							|  |  |  |     option_casual = 1 | 
					
						
							|  |  |  |     option_regular = 2 | 
					
						
							|  |  |  |     option_veteran = 3 | 
					
						
							|  |  |  |     option_expert = 4 | 
					
						
							|  |  |  |     option_master = 5 | 
					
						
							|  |  |  |     option_samus = 6 | 
					
						
							|  |  |  |     option_Season_Races = 7 | 
					
						
							|  |  |  |     option_SMRAT2021 = 8 | 
					
						
							|  |  |  |     option_solution = 9 | 
					
						
							|  |  |  |     option_custom = 10 | 
					
						
							|  |  |  |     option_varia_custom = 11 | 
					
						
							|  |  |  |     default = 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class StartLocation(Choice): | 
					
						
							|  |  |  |     displayname = "Start Location" | 
					
						
							|  |  |  |     option_Ceres = 0 | 
					
						
							|  |  |  |     option_Landing_Site = 1 | 
					
						
							|  |  |  |     option_Gauntlet_Top = 2 | 
					
						
							|  |  |  |     option_Green_Brinstar_Elevator = 3 | 
					
						
							|  |  |  |     option_Big_Pink = 4 | 
					
						
							|  |  |  |     option_Etecoons_Supers = 5 | 
					
						
							|  |  |  |     option_Wrecked_Ship_Main = 6 | 
					
						
							|  |  |  |     option_Firefleas_Top = 7 | 
					
						
							|  |  |  |     option_Business_Center = 8 | 
					
						
							|  |  |  |     option_Bubble_Mountain = 9 | 
					
						
							|  |  |  |     option_Mama_Turtle = 10 | 
					
						
							|  |  |  |     option_Watering_Hole = 11 | 
					
						
							|  |  |  |     option_Aqueduct = 12 | 
					
						
							|  |  |  |     option_Red_Brinstar_Elevator = 13 | 
					
						
							|  |  |  |     option_Golden_Four = 14 | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-03 22:11:25 +01:00
										 |  |  | class DeathLink(Choice): | 
					
						
							|  |  |  |     """When DeathLink is enabled and someone dies, you will die. With survive reserve tanks can save you.""" | 
					
						
							| 
									
										
										
										
											2021-12-17 19:17:41 +01:00
										 |  |  |     displayname = "Death Link" | 
					
						
							| 
									
										
										
										
											2021-12-02 00:11:42 -05:00
										 |  |  |     option_disable = 0 | 
					
						
							|  |  |  |     option_enable = 1 | 
					
						
							|  |  |  |     option_enable_survive = 3 | 
					
						
							| 
									
										
										
										
											2021-12-04 14:04:28 -08:00
										 |  |  |     alias_false = 0 | 
					
						
							|  |  |  |     alias_true = 1 | 
					
						
							| 
									
										
										
										
											2021-12-02 00:11:42 -05:00
										 |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  | class MaxDifficulty(Choice): | 
					
						
							|  |  |  |     displayname = "Maximum Difficulty" | 
					
						
							|  |  |  |     option_easy = 0 | 
					
						
							|  |  |  |     option_medium = 1 | 
					
						
							|  |  |  |     option_hard = 2 | 
					
						
							|  |  |  |     option_harder = 3 | 
					
						
							|  |  |  |     option_hardcore = 4 | 
					
						
							|  |  |  |     option_mania = 5 | 
					
						
							|  |  |  |     option_infinity = 6 | 
					
						
							|  |  |  |     default = 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MorphPlacement(Choice): | 
					
						
							|  |  |  |     displayname = "Morph Placement" | 
					
						
							|  |  |  |     option_early = 0 | 
					
						
							|  |  |  |     option_normal = 1 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class StrictMinors(Toggle): | 
					
						
							|  |  |  |     displayname = "Strict Minors" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MissileQty(Range): | 
					
						
							|  |  |  |     displayname = "Missile Quantity" | 
					
						
							|  |  |  |     range_start = 10 | 
					
						
							|  |  |  |     range_end = 90 | 
					
						
							|  |  |  |     default = 30 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SuperQty(Range): | 
					
						
							|  |  |  |     displayname = "Super Quantity" | 
					
						
							|  |  |  |     range_start = 10 | 
					
						
							|  |  |  |     range_end = 90 | 
					
						
							|  |  |  |     default = 20 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PowerBombQty(Range): | 
					
						
							|  |  |  |     displayname = "Power Bomb Quantity" | 
					
						
							|  |  |  |     range_start = 10 | 
					
						
							|  |  |  |     range_end = 90 | 
					
						
							|  |  |  |     default = 10 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MinorQty(Range): | 
					
						
							|  |  |  |     displayname = "Minor Quantity" | 
					
						
							|  |  |  |     range_start = 7 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     default = 100 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class EnergyQty(Choice): | 
					
						
							|  |  |  |     displayname = "Energy Quantity" | 
					
						
							|  |  |  |     option_ultra_sparse = 0 | 
					
						
							|  |  |  |     option_sparse = 1 | 
					
						
							|  |  |  |     option_medium = 2 | 
					
						
							|  |  |  |     option_vanilla = 3 | 
					
						
							|  |  |  |     default = 3 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AreaRandomization(Choice): | 
					
						
							|  |  |  |     displayname = "Area Randomization" | 
					
						
							|  |  |  |     option_off = 0 | 
					
						
							|  |  |  |     option_light = 1 | 
					
						
							|  |  |  |     option_on = 2 | 
					
						
							|  |  |  |     alias_false = 0 | 
					
						
							|  |  |  |     alias_true = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AreaLayout(Toggle): | 
					
						
							|  |  |  |     displayname = "Area Layout" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DoorsColorsRando(Toggle): | 
					
						
							|  |  |  |     displayname = "Doors Colors Rando" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AllowGreyDoors(Toggle): | 
					
						
							|  |  |  |     displayname = "Allow Grey Doors" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BossRandomization(Toggle): | 
					
						
							|  |  |  |     displayname = "Boss Randomization" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class FunCombat(Toggle): | 
					
						
							| 
									
										
										
										
											2021-12-02 00:11:42 -05:00
										 |  |  |     """if used, might force 'items' accessibility""" | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  |     displayname = "Fun Combat" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class FunMovement(Toggle): | 
					
						
							| 
									
										
										
										
											2021-12-02 00:11:42 -05:00
										 |  |  |     """if used, might force 'items' accessibility""" | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  |     displayname = "Fun Movement" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class FunSuits(Toggle): | 
					
						
							| 
									
										
										
										
											2021-12-02 00:11:42 -05:00
										 |  |  |     """if used, might force 'items' accessibility""" | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  |     displayname = "Fun Suits" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class LayoutPatches(DefaultOnToggle): | 
					
						
							|  |  |  |     displayname = "Layout Patches" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VariaTweaks(Toggle): | 
					
						
							|  |  |  |     displayname = "Varia Tweaks" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class NerfedCharge(Toggle): | 
					
						
							|  |  |  |     displayname = "Nerfed Charge" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class GravityBehaviour(Choice): | 
					
						
							|  |  |  |     displayname = "Gravity Behaviour" | 
					
						
							|  |  |  |     option_Vanilla = 0 | 
					
						
							|  |  |  |     option_Balanced = 1 | 
					
						
							|  |  |  |     option_Progressive = 2 | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ElevatorsDoorsSpeed(DefaultOnToggle): | 
					
						
							|  |  |  |     displayname = "Elevators doors speed" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SpinJumpRestart(Toggle): | 
					
						
							|  |  |  |     displayname = "Spin Jump Restart" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class InfiniteSpaceJump(Toggle): | 
					
						
							|  |  |  |     displayname = "Infinite Space Jump" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RefillBeforeSave(Toggle): | 
					
						
							|  |  |  |     displayname = "Refill Before Save" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Hud(Toggle): | 
					
						
							|  |  |  |     displayname = "Hud" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Animals(Toggle): | 
					
						
							|  |  |  |     displayname = "Animals" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class NoMusic(Toggle): | 
					
						
							|  |  |  |     displayname = "No Music" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomMusic(Toggle): | 
					
						
							|  |  |  |     displayname = "Random Music" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CustomPreset(OptionDict): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     see https://randommetroidsolver.pythonanywhere.com/presets for detailed info on each preset settings | 
					
						
							|  |  |  |     knows: each skill (know) has a pair [can use, perceived difficulty using one of 1, 5, 10, 25, 50 or 100 each one matching a max_difficulty] | 
					
						
							|  |  |  |     settings: hard rooms, hellruns and bosses settings | 
					
						
							|  |  |  |     controller: predefined controller mapping and moon walk setting | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     displayname = "Custom Preset" | 
					
						
							|  |  |  |     default = {  "knows": {}, | 
					
						
							|  |  |  |                  "settings": {}, | 
					
						
							|  |  |  |                  "controller": {} | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VariaCustomPreset(OptionList): | 
					
						
							|  |  |  |     """use an entry from the preset list on https://randommetroidsolver.pythonanywhere.com/presets""" | 
					
						
							|  |  |  |     displayname = "Varia Custom Preset"   | 
					
						
							|  |  |  |     default = {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | sm_options: typing.Dict[str, type(Option)] = { | 
					
						
							|  |  |  |     "start_inventory_removes_from_pool": StartItemsRemovesFromPool, | 
					
						
							|  |  |  |     "preset": Preset, | 
					
						
							|  |  |  |     "start_location": StartLocation, | 
					
						
							| 
									
										
										
										
											2021-12-03 22:11:25 +01:00
										 |  |  |     "death_link": DeathLink, | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  |     #"majors_split": "Full", | 
					
						
							|  |  |  |     #"scav_num_locs": "10", | 
					
						
							|  |  |  |     #"scav_randomized": "off", | 
					
						
							|  |  |  |     #"scav_escape": "off", | 
					
						
							|  |  |  |     "max_difficulty": MaxDifficulty, | 
					
						
							|  |  |  |     #"progression_speed": "medium", | 
					
						
							|  |  |  |     #"progression_difficulty": "normal", | 
					
						
							|  |  |  |     "morph_placement": MorphPlacement, | 
					
						
							| 
									
										
										
										
											2021-12-02 00:11:42 -05:00
										 |  |  |     #"suits_restriction": SuitsRestriction, | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  |     #"hide_items": "off", | 
					
						
							|  |  |  |     "strict_minors": StrictMinors, | 
					
						
							|  |  |  |     "missile_qty": MissileQty, | 
					
						
							|  |  |  |     "super_qty": SuperQty, | 
					
						
							|  |  |  |     "power_bomb_qty": PowerBombQty, | 
					
						
							|  |  |  |     "minor_qty": MinorQty, | 
					
						
							|  |  |  |     "energy_qty": EnergyQty, | 
					
						
							|  |  |  |     "area_randomization": AreaRandomization, | 
					
						
							|  |  |  |     "area_layout": AreaLayout, | 
					
						
							|  |  |  |     "doors_colors_rando": DoorsColorsRando, | 
					
						
							|  |  |  |     "allow_grey_doors": AllowGreyDoors, | 
					
						
							|  |  |  |     "boss_randomization": BossRandomization, | 
					
						
							|  |  |  |     #"minimizer": "off", | 
					
						
							|  |  |  |     #"minimizer_qty": "45", | 
					
						
							|  |  |  |     #"minimizer_tourian": "off", | 
					
						
							|  |  |  |     #"escape_rando": "off", | 
					
						
							|  |  |  |     #"remove_escape_enemies": "off", | 
					
						
							|  |  |  |     "fun_combat": FunCombat, | 
					
						
							|  |  |  |     "fun_movement": FunMovement, | 
					
						
							|  |  |  |     "fun_suits": FunSuits, | 
					
						
							|  |  |  |     "layout_patches": LayoutPatches, | 
					
						
							|  |  |  |     "varia_tweaks": VariaTweaks, | 
					
						
							|  |  |  |     "nerfed_charge": NerfedCharge, | 
					
						
							|  |  |  |     "gravity_behaviour": GravityBehaviour, | 
					
						
							|  |  |  |     #"item_sounds": "on", | 
					
						
							|  |  |  |     "elevators_doors_speed": ElevatorsDoorsSpeed, | 
					
						
							|  |  |  |     "spin_jump_restart": SpinJumpRestart, | 
					
						
							|  |  |  |     #"rando_speed": "off", | 
					
						
							|  |  |  |     "infinite_space_jump": InfiniteSpaceJump, | 
					
						
							|  |  |  |     "refill_before_save": RefillBeforeSave, | 
					
						
							|  |  |  |     "hud": Hud, | 
					
						
							|  |  |  |     "animals": Animals, | 
					
						
							|  |  |  |     "no_music": NoMusic, | 
					
						
							|  |  |  |     "random_music": RandomMusic, | 
					
						
							|  |  |  |     "custom_preset": CustomPreset, | 
					
						
							|  |  |  |     "varia_custom_preset": VariaCustomPreset | 
					
						
							|  |  |  |     } |