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
 |