108 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			108 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from Options import PerGameCommonOptions, Toggle, DefaultOnToggle, StartInventoryPool, Choice
							 | 
						||
| 
								 | 
							
								from dataclasses import dataclass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class KeepShopRedPotions(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Prevents the Shop's Red Potions from being shuffled. Those locations
							 | 
						||
| 
								 | 
							
								    will have purchasable Red Potion as usual for their usual price.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    display_name = "Keep Shop Red Potions"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class IncludePendant(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Pendant is an item that boosts your attack power permanently when picked up.
							 | 
						||
| 
								 | 
							
								    However, due to a programming error in the original game, it has the reverse
							 | 
						||
| 
								 | 
							
								    effect. You start with the Pendant power, and lose it when picking
							 | 
						||
| 
								 | 
							
								    it up. So this item is essentially a trap.
							 | 
						||
| 
								 | 
							
								    There is a setting in the client to reverse the effect back to its original intend.
							 | 
						||
| 
								 | 
							
								    This could be used in conjunction with this option to increase or lower difficulty.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    display_name = "Include Pendant"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class IncludePoisons(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Whether or not to include Poison Potions in the pool of items. Including them
							 | 
						||
| 
								 | 
							
								    effectively turn them into traps in multiplayer.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    display_name = "Include Poisons"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RequireDragonSlayer(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Requires the Dragon Slayer to be available before fighting the final boss is required.
							 | 
						||
| 
								 | 
							
								    Turning this on will turn Progressive Shields into progression items.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    This setting does not force you to use Dragon Slayer to kill the final boss.
							 | 
						||
| 
								 | 
							
								    Instead, it ensures that you will have the Dragon Slayer and be able to equip
							 | 
						||
| 
								 | 
							
								    it before you are expected to beat the final boss.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    display_name = "Require Dragon Slayer"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomMusic(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    All levels' music is shuffled. Except the title screen because it's finite.
							 | 
						||
| 
								 | 
							
								    This is an aesthetic option and doesn't affect gameplay.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    display_name = "Random Musics"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomSound(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    All sounds are shuffled.
							 | 
						||
| 
								 | 
							
								    This is an aesthetic option and doesn't affect gameplay.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    display_name = "Random Sounds"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomNPC(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    NPCs and their portraits are shuffled.
							 | 
						||
| 
								 | 
							
								    This is an aesthetic option and doesn't affect gameplay.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    display_name = "Random NPCs"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomMonsters(Choice):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Choose how monsters are randomized.
							 | 
						||
| 
								 | 
							
								    "Vanilla": No randomization
							 | 
						||
| 
								 | 
							
								    "Level Shuffle": Monsters are shuffled within a level
							 | 
						||
| 
								 | 
							
								    "Level Random": Monsters are picked randomly, balanced based on the ratio of the current level
							 | 
						||
| 
								 | 
							
								    "World Shuffle": Monsters are shuffled across the entire world
							 | 
						||
| 
								 | 
							
								    "World Random": Monsters are picked randomly, balanced based on the ratio of the entire world
							 | 
						||
| 
								 | 
							
								    "Chaotic": Completely random, except big vs small ratio is kept. Big are mini-bosses.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    display_name = "Random Monsters"
							 | 
						||
| 
								 | 
							
								    option_vanilla = 0
							 | 
						||
| 
								 | 
							
								    option_level_shuffle = 1
							 | 
						||
| 
								 | 
							
								    option_level_random = 2
							 | 
						||
| 
								 | 
							
								    option_world_shuffle = 3
							 | 
						||
| 
								 | 
							
								    option_world_random = 4
							 | 
						||
| 
								 | 
							
								    option_chaotic = 5
							 | 
						||
| 
								 | 
							
								    default = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RandomRewards(Toggle):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Monsters drops are shuffled.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    display_name = "Random Rewards"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@dataclass
							 | 
						||
| 
								 | 
							
								class FaxanaduOptions(PerGameCommonOptions):
							 | 
						||
| 
								 | 
							
								    start_inventory_from_pool: StartInventoryPool
							 | 
						||
| 
								 | 
							
								    keep_shop_red_potions: KeepShopRedPotions
							 | 
						||
| 
								 | 
							
								    include_pendant: IncludePendant
							 | 
						||
| 
								 | 
							
								    include_poisons: IncludePoisons
							 | 
						||
| 
								 | 
							
								    require_dragon_slayer: RequireDragonSlayer
							 | 
						||
| 
								 | 
							
								    random_musics: RandomMusic
							 | 
						||
| 
								 | 
							
								    random_sounds: RandomSound
							 | 
						||
| 
								 | 
							
								    random_npcs: RandomNPC
							 | 
						||
| 
								 | 
							
								    random_monsters: RandomMonsters
							 | 
						||
| 
								 | 
							
								    random_rewards: RandomRewards
							 |