238 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			238 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Python
		
	
	
	
| import typing
 | |
| from Options import Choice, Range, OptionDict, OptionList, Option, Toggle, DefaultOnToggle, DeathLink
 | |
| 
 | |
| 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
 | |
| 
 | |
| 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 SuitsRestriction(DefaultOnToggle):
 | |
|     displayname = "Suits Restriction"
 | |
| 
 | |
| 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):
 | |
|     displayname = "Fun Combat"
 | |
| 
 | |
| class FunMovement(Toggle):
 | |
|     displayname = "Fun Movement"
 | |
| 
 | |
| class FunSuits(Toggle):
 | |
|     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,
 | |
|     "death_link": DeathLink,
 | |
|     #"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,
 | |
|     "suits_restriction": SuitsRestriction,
 | |
|     #"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
 | |
|     }
 |