64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								import typing
							 | 
						||
| 
								 | 
							
								from Options import Choice, Option
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SMLogic(Choice):
							 | 
						||
| 
								 | 
							
								    """This option selects what kind of logic to use for item placement inside
							 | 
						||
| 
								 | 
							
								    Super Metroid.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Normal - Normal logic includes only what Super Metroid teaches players
							 | 
						||
| 
								 | 
							
								    itself. Anything that's not demonstrated in-game or by the intro cutscenes
							 | 
						||
| 
								 | 
							
								    will not be required here.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Hard - Hard logic is based upon the "no major glitches" ruleset and
							 | 
						||
| 
								 | 
							
								    includes most tricks that are considered minor glitches, with some 
							 | 
						||
| 
								 | 
							
								    restrictions. You'll want to be somewhat of a Super Metroid veteran for
							 | 
						||
| 
								 | 
							
								    this logic.
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    See https://samus.link/information for required moves."""
							 | 
						||
| 
								 | 
							
								    display_name = "SMLogic"
							 | 
						||
| 
								 | 
							
								    option_Normal = 0
							 | 
						||
| 
								 | 
							
								    option_Hard = 1
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SwordLocation(Choice):
							 | 
						||
| 
								 | 
							
								    """This option decides where the first sword will be placed.
							 | 
						||
| 
								 | 
							
								    Randomized - The sword can be placed anywhere.
							 | 
						||
| 
								 | 
							
								    Early - The sword will be placed in a location accessible from the start of
							 | 
						||
| 
								 | 
							
								    the game.
							 | 
						||
| 
								 | 
							
								    Unce assured - The sword will always be placed on Link's Uncle."""
							 | 
						||
| 
								 | 
							
								    display_name = "Sword Location"
							 | 
						||
| 
								 | 
							
								    option_Randomized = 0
							 | 
						||
| 
								 | 
							
								    option_Early = 1
							 | 
						||
| 
								 | 
							
								    option_Uncle = 2
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class MorphLocation(Choice):
							 | 
						||
| 
								 | 
							
								    """This option decides where the morph ball will be placed.
							 | 
						||
| 
								 | 
							
								    Randomized - The morph ball can be placed anywhere.
							 | 
						||
| 
								 | 
							
								    Early - The morph ball will be placed in a location accessible from the 
							 | 
						||
| 
								 | 
							
								    start of the game.
							 | 
						||
| 
								 | 
							
								    Original location - The morph ball will always be placed at its original 
							 | 
						||
| 
								 | 
							
								    location."""
							 | 
						||
| 
								 | 
							
								    display_name = "Morph Location"
							 | 
						||
| 
								 | 
							
								    option_Randomized = 0
							 | 
						||
| 
								 | 
							
								    option_Early = 1
							 | 
						||
| 
								 | 
							
								    option_Original = 2
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class KeyShuffle(Choice):
							 | 
						||
| 
								 | 
							
								    """This option decides how dungeon items such as keys are shuffled.
							 | 
						||
| 
								 | 
							
								    None - A Link to the Past dungeon items can only be placed inside the 
							 | 
						||
| 
								 | 
							
								    dungeon they belong to, and there are no changes to Super Metroid.
							 | 
						||
| 
								 | 
							
								    Keysanity - See https://samus.link/information"""
							 | 
						||
| 
								 | 
							
								    display_name = "Key Shuffle"
							 | 
						||
| 
								 | 
							
								    option_None = 0
							 | 
						||
| 
								 | 
							
								    option_Keysanity = 1
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								smz3_options: typing.Dict[str, type(Option)] = {
							 | 
						||
| 
								 | 
							
								    "sm_logic": SMLogic,
							 | 
						||
| 
								 | 
							
								    "sword_location": SwordLocation,
							 | 
						||
| 
								 | 
							
								    "morph_location": MorphLocation,
							 | 
						||
| 
								 | 
							
								    "key_shuffle": KeyShuffle
							 | 
						||
| 
								 | 
							
								    }
							 |