503 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			503 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from typing import Dict, Any | ||
|  | 
 | ||
|  | from .Options import * | ||
|  | 
 | ||
|  | minsanity = { | ||
|  |     "goal": Goal.option_chaos_chao, | ||
|  |     "max_emblem_cap": MaximumEmblemCap.range_start, | ||
|  | 
 | ||
|  |     "keysanity": False, | ||
|  |     "whistlesanity": Whistlesanity.option_none, | ||
|  |     "beetlesanity": False, | ||
|  |     "omosanity": False, | ||
|  |     "animalsanity": False, | ||
|  |     "itemboxsanity": ItemBoxsanity.option_none, | ||
|  |     "bigsanity": False, | ||
|  |     "kart_race_checks": KartRaceChecks.option_none, | ||
|  | 
 | ||
|  |     "junk_fill_percentage": 0, | ||
|  | 
 | ||
|  |     "sonic_mission_count": BaseMissionCount.range_start, | ||
|  |     "sonic_mission_2": False, | ||
|  |     "sonic_mission_3": False, | ||
|  |     "sonic_mission_4": False, | ||
|  |     "sonic_mission_5": False, | ||
|  | 
 | ||
|  |     "shadow_mission_count": BaseMissionCount.range_start, | ||
|  |     "shadow_mission_2": False, | ||
|  |     "shadow_mission_3": False, | ||
|  |     "shadow_mission_4": False, | ||
|  |     "shadow_mission_5": False, | ||
|  | 
 | ||
|  |     "tails_mission_count": BaseMissionCount.range_start, | ||
|  |     "tails_mission_2": False, | ||
|  |     "tails_mission_3": False, | ||
|  |     "tails_mission_4": False, | ||
|  |     "tails_mission_5": False, | ||
|  | 
 | ||
|  |     "eggman_mission_count": BaseMissionCount.range_start, | ||
|  |     "eggman_mission_2": False, | ||
|  |     "eggman_mission_3": False, | ||
|  |     "eggman_mission_4": False, | ||
|  |     "eggman_mission_5": False, | ||
|  | 
 | ||
|  |     "knuckles_mission_count": BaseMissionCount.range_start, | ||
|  |     "knuckles_mission_2": False, | ||
|  |     "knuckles_mission_3": False, | ||
|  |     "knuckles_mission_4": False, | ||
|  |     "knuckles_mission_5": False, | ||
|  | 
 | ||
|  |     "rouge_mission_count": BaseMissionCount.range_start, | ||
|  |     "rouge_mission_2": False, | ||
|  |     "rouge_mission_3": False, | ||
|  |     "rouge_mission_4": False, | ||
|  |     "rouge_mission_5": False, | ||
|  | 
 | ||
|  |     "kart_mission_count": BaseMissionCount.range_start, | ||
|  |     "kart_mission_2": False, | ||
|  |     "kart_mission_3": False, | ||
|  |     "kart_mission_4": False, | ||
|  |     "kart_mission_5": False, | ||
|  | 
 | ||
|  |     "cannons_core_mission_count": BaseMissionCount.range_start, | ||
|  |     "cannons_core_mission_2": False, | ||
|  |     "cannons_core_mission_3": False, | ||
|  |     "cannons_core_mission_4": False, | ||
|  |     "cannons_core_mission_5": False, | ||
|  | } | ||
|  | 
 | ||
|  | chao_centric = { | ||
|  |     "goal": Goal.option_chaos_chao, | ||
|  | 
 | ||
|  |     "keysanity": False, | ||
|  |     "whistlesanity": Whistlesanity.option_none, | ||
|  |     "beetlesanity": False, | ||
|  |     "omosanity": False, | ||
|  |     "animalsanity": False, | ||
|  |     "itemboxsanity": ItemBoxsanity.option_none, | ||
|  |     "bigsanity": False, | ||
|  |     "kart_race_checks": KartRaceChecks.option_none, | ||
|  | 
 | ||
|  |     "black_market_slots": BlackMarketSlots.range_end, | ||
|  |     "black_market_unlock_costs": BlackMarketUnlockCosts.option_high, | ||
|  |     "chao_race_difficulty": ChaoRaceDifficulty.option_expert, | ||
|  |     "chao_karate_difficulty": ChaoKarateDifficulty.option_super, | ||
|  |     "chao_stadium_checks": ChaoStadiumChecks.option_all, | ||
|  |     "chao_animal_parts": True, | ||
|  |     "chao_stats": ChaoStats.range_end, | ||
|  |     "chao_stats_frequency": 1, | ||
|  |     "chao_stats_stamina": True, | ||
|  |     "chao_stats_hidden": True, | ||
|  |     "chao_kindergarten": ChaoKindergarten.option_full, | ||
|  | 
 | ||
|  |     "junk_fill_percentage": 50, | ||
|  | 
 | ||
|  |     "sonic_mission_count": BaseMissionCount.range_start, | ||
|  |     "sonic_mission_2": False, | ||
|  |     "sonic_mission_3": False, | ||
|  |     "sonic_mission_4": False, | ||
|  |     "sonic_mission_5": False, | ||
|  | 
 | ||
|  |     "shadow_mission_count": BaseMissionCount.range_start, | ||
|  |     "shadow_mission_2": False, | ||
|  |     "shadow_mission_3": False, | ||
|  |     "shadow_mission_4": False, | ||
|  |     "shadow_mission_5": False, | ||
|  | 
 | ||
|  |     "tails_mission_count": BaseMissionCount.range_start, | ||
|  |     "tails_mission_2": False, | ||
|  |     "tails_mission_3": False, | ||
|  |     "tails_mission_4": False, | ||
|  |     "tails_mission_5": False, | ||
|  | 
 | ||
|  |     "eggman_mission_count": BaseMissionCount.range_start, | ||
|  |     "eggman_mission_2": False, | ||
|  |     "eggman_mission_3": False, | ||
|  |     "eggman_mission_4": False, | ||
|  |     "eggman_mission_5": False, | ||
|  | 
 | ||
|  |     "knuckles_mission_count": BaseMissionCount.range_start, | ||
|  |     "knuckles_mission_2": False, | ||
|  |     "knuckles_mission_3": False, | ||
|  |     "knuckles_mission_4": False, | ||
|  |     "knuckles_mission_5": False, | ||
|  | 
 | ||
|  |     "rouge_mission_count": BaseMissionCount.range_start, | ||
|  |     "rouge_mission_2": False, | ||
|  |     "rouge_mission_3": False, | ||
|  |     "rouge_mission_4": False, | ||
|  |     "rouge_mission_5": False, | ||
|  | 
 | ||
|  |     "kart_mission_count": BaseMissionCount.range_start, | ||
|  |     "kart_mission_2": False, | ||
|  |     "kart_mission_3": False, | ||
|  |     "kart_mission_4": False, | ||
|  |     "kart_mission_5": False, | ||
|  | 
 | ||
|  |     "cannons_core_mission_count": BaseMissionCount.range_start, | ||
|  |     "cannons_core_mission_2": False, | ||
|  |     "cannons_core_mission_3": False, | ||
|  |     "cannons_core_mission_4": False, | ||
|  |     "cannons_core_mission_5": False, | ||
|  | } | ||
|  | 
 | ||
|  | allsanity_no_chao = { | ||
|  |     "goal": Goal.option_cannons_core_boss_rush, | ||
|  |     "boss_rush_shuffle": BossRushShuffle.option_chaos, | ||
|  |     "minigame_madness_requirement": MinigameMadnessRequirement.range_end, | ||
|  |     "minigame_madness_minimum": MinigameMadnessMinimum.range_end, | ||
|  |     "max_emblem_cap": MaximumEmblemCap.range_end, | ||
|  | 
 | ||
|  |     "mission_shuffle": True, | ||
|  |     "required_cannons_core_missions": RequiredCannonsCoreMissions.option_all_active, | ||
|  |     "emblem_percentage_for_cannons_core": EmblemPercentageForCannonsCore.range_end, | ||
|  |     "number_of_level_gates": NumberOfLevelGates.range_end, | ||
|  |     "level_gate_costs": LevelGateCosts.option_high, | ||
|  | 
 | ||
|  |     "keysanity": True, | ||
|  |     "whistlesanity": Whistlesanity.option_both, | ||
|  |     "beetlesanity": True, | ||
|  |     "omosanity": True, | ||
|  |     "animalsanity": True, | ||
|  |     "itemboxsanity": ItemBoxsanity.option_all, | ||
|  |     "bigsanity": True, | ||
|  |     "kart_race_checks": KartRaceChecks.option_full, | ||
|  | 
 | ||
|  |     "junk_fill_percentage": 25, | ||
|  |     "trap_fill_percentage": 25, | ||
|  |     "omochao_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "timestop_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "confusion_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "tiny_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "gravity_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "exposition_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "ice_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "slow_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "cutscene_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "reverse_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "literature_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "controller_drift_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "poison_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "bee_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "pong_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "breakout_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "fishing_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "trivia_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "pokemon_trivia_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "pokemon_count_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "number_sequence_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "light_up_path_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "pinball_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "math_quiz_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "snake_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "input_sequence_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "minigame_trap_difficulty": MinigameTrapDifficulty.option_chaos, | ||
|  |     "big_fishing_difficulty": BigFishingDifficulty.option_chaos, | ||
|  | 
 | ||
|  |     "music_shuffle": MusicShuffle.option_full, | ||
|  |     "voice_shuffle": VoiceShuffle.option_shuffled, | ||
|  | 
 | ||
|  |     "sonic_mission_count": BaseMissionCount.range_end, | ||
|  |     "sonic_mission_2": True, | ||
|  |     "sonic_mission_3": True, | ||
|  |     "sonic_mission_4": True, | ||
|  |     "sonic_mission_5": True, | ||
|  | 
 | ||
|  |     "shadow_mission_count": BaseMissionCount.range_end, | ||
|  |     "shadow_mission_2": True, | ||
|  |     "shadow_mission_3": True, | ||
|  |     "shadow_mission_4": True, | ||
|  |     "shadow_mission_5": True, | ||
|  | 
 | ||
|  |     "tails_mission_count": BaseMissionCount.range_end, | ||
|  |     "tails_mission_2": True, | ||
|  |     "tails_mission_3": True, | ||
|  |     "tails_mission_4": True, | ||
|  |     "tails_mission_5": True, | ||
|  | 
 | ||
|  |     "eggman_mission_count": BaseMissionCount.range_end, | ||
|  |     "eggman_mission_2": True, | ||
|  |     "eggman_mission_3": True, | ||
|  |     "eggman_mission_4": True, | ||
|  |     "eggman_mission_5": True, | ||
|  | 
 | ||
|  |     "knuckles_mission_count": BaseMissionCount.range_end, | ||
|  |     "knuckles_mission_2": True, | ||
|  |     "knuckles_mission_3": True, | ||
|  |     "knuckles_mission_4": True, | ||
|  |     "knuckles_mission_5": True, | ||
|  | 
 | ||
|  |     "rouge_mission_count": BaseMissionCount.range_end, | ||
|  |     "rouge_mission_2": True, | ||
|  |     "rouge_mission_3": True, | ||
|  |     "rouge_mission_4": True, | ||
|  |     "rouge_mission_5": True, | ||
|  | 
 | ||
|  |     "kart_mission_count": BaseMissionCount.range_end, | ||
|  |     "kart_mission_2": True, | ||
|  |     "kart_mission_3": True, | ||
|  |     "kart_mission_4": True, | ||
|  |     "kart_mission_5": True, | ||
|  | 
 | ||
|  |     "cannons_core_mission_count": BaseMissionCount.range_end, | ||
|  |     "cannons_core_mission_2": True, | ||
|  |     "cannons_core_mission_3": True, | ||
|  |     "cannons_core_mission_4": True, | ||
|  |     "cannons_core_mission_5": True, | ||
|  | } | ||
|  | 
 | ||
|  | allsanity = { | ||
|  |     "goal": Goal.option_cannons_core_boss_rush, | ||
|  |     "boss_rush_shuffle": BossRushShuffle.option_chaos, | ||
|  |     "minigame_madness_requirement": MinigameMadnessRequirement.range_end, | ||
|  |     "minigame_madness_minimum": MinigameMadnessMinimum.range_end, | ||
|  |     "max_emblem_cap": MaximumEmblemCap.range_end, | ||
|  | 
 | ||
|  |     "mission_shuffle": True, | ||
|  |     "required_cannons_core_missions": RequiredCannonsCoreMissions.option_all_active, | ||
|  |     "emblem_percentage_for_cannons_core": EmblemPercentageForCannonsCore.range_end, | ||
|  |     "number_of_level_gates": NumberOfLevelGates.range_end, | ||
|  |     "level_gate_costs": LevelGateCosts.option_high, | ||
|  | 
 | ||
|  |     "keysanity": True, | ||
|  |     "whistlesanity": Whistlesanity.option_both, | ||
|  |     "beetlesanity": True, | ||
|  |     "omosanity": True, | ||
|  |     "animalsanity": True, | ||
|  |     "itemboxsanity": ItemBoxsanity.option_all, | ||
|  |     "bigsanity": True, | ||
|  |     "kart_race_checks": KartRaceChecks.option_full, | ||
|  | 
 | ||
|  |     "black_market_slots": BlackMarketSlots.range_end, | ||
|  |     "black_market_unlock_costs": BlackMarketUnlockCosts.option_high, | ||
|  |     "chao_race_difficulty": ChaoRaceDifficulty.option_expert, | ||
|  |     "chao_karate_difficulty": ChaoKarateDifficulty.option_super, | ||
|  |     "chao_stadium_checks": ChaoStadiumChecks.option_all, | ||
|  |     "chao_animal_parts": True, | ||
|  |     "chao_stats": ChaoStats.range_end, | ||
|  |     "chao_stats_frequency": 1, | ||
|  |     "chao_stats_stamina": True, | ||
|  |     "chao_stats_hidden": True, | ||
|  |     "chao_kindergarten": ChaoKindergarten.option_full, | ||
|  | 
 | ||
|  |     "junk_fill_percentage": 25, | ||
|  |     "trap_fill_percentage": 25, | ||
|  |     "omochao_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "timestop_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "confusion_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "tiny_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "gravity_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "exposition_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "ice_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "slow_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "cutscene_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "reverse_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "literature_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "controller_drift_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "poison_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "bee_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "pong_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "breakout_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "fishing_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "trivia_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "pokemon_trivia_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "pokemon_count_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "number_sequence_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "light_up_path_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "pinball_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "math_quiz_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "snake_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "input_sequence_trap_weight": BaseTrapWeight.option_high, | ||
|  |     "minigame_trap_difficulty": MinigameTrapDifficulty.option_chaos, | ||
|  |     "big_fishing_difficulty": BigFishingDifficulty.option_chaos, | ||
|  | 
 | ||
|  |     "music_shuffle": MusicShuffle.option_full, | ||
|  |     "voice_shuffle": VoiceShuffle.option_shuffled, | ||
|  | 
 | ||
|  |     "sonic_mission_count": BaseMissionCount.range_end, | ||
|  |     "sonic_mission_2": True, | ||
|  |     "sonic_mission_3": True, | ||
|  |     "sonic_mission_4": True, | ||
|  |     "sonic_mission_5": True, | ||
|  | 
 | ||
|  |     "shadow_mission_count": BaseMissionCount.range_end, | ||
|  |     "shadow_mission_2": True, | ||
|  |     "shadow_mission_3": True, | ||
|  |     "shadow_mission_4": True, | ||
|  |     "shadow_mission_5": True, | ||
|  | 
 | ||
|  |     "tails_mission_count": BaseMissionCount.range_end, | ||
|  |     "tails_mission_2": True, | ||
|  |     "tails_mission_3": True, | ||
|  |     "tails_mission_4": True, | ||
|  |     "tails_mission_5": True, | ||
|  | 
 | ||
|  |     "eggman_mission_count": BaseMissionCount.range_end, | ||
|  |     "eggman_mission_2": True, | ||
|  |     "eggman_mission_3": True, | ||
|  |     "eggman_mission_4": True, | ||
|  |     "eggman_mission_5": True, | ||
|  | 
 | ||
|  |     "knuckles_mission_count": BaseMissionCount.range_end, | ||
|  |     "knuckles_mission_2": True, | ||
|  |     "knuckles_mission_3": True, | ||
|  |     "knuckles_mission_4": True, | ||
|  |     "knuckles_mission_5": True, | ||
|  | 
 | ||
|  |     "rouge_mission_count": BaseMissionCount.range_end, | ||
|  |     "rouge_mission_2": True, | ||
|  |     "rouge_mission_3": True, | ||
|  |     "rouge_mission_4": True, | ||
|  |     "rouge_mission_5": True, | ||
|  | 
 | ||
|  |     "kart_mission_count": BaseMissionCount.range_end, | ||
|  |     "kart_mission_2": True, | ||
|  |     "kart_mission_3": True, | ||
|  |     "kart_mission_4": True, | ||
|  |     "kart_mission_5": True, | ||
|  | 
 | ||
|  |     "cannons_core_mission_count": BaseMissionCount.range_end, | ||
|  |     "cannons_core_mission_2": True, | ||
|  |     "cannons_core_mission_3": True, | ||
|  |     "cannons_core_mission_4": True, | ||
|  |     "cannons_core_mission_5": True, | ||
|  | } | ||
|  | 
 | ||
|  | all_random = { | ||
|  |     "goal": "random", | ||
|  |     "boss_rush_shuffle": "random", | ||
|  |     "minigame_madness_requirement": "random", | ||
|  |     "minigame_madness_minimum": "random", | ||
|  |     "logic_difficulty": "random", | ||
|  |     "required_rank": "random", | ||
|  |     "max_emblem_cap": "random", | ||
|  |     "ring_loss": "random", | ||
|  | 
 | ||
|  |     "mission_shuffle": "random", | ||
|  |     "required_cannons_core_missions": "random", | ||
|  |     "emblem_percentage_for_cannons_core": "random", | ||
|  |     "number_of_level_gates": "random", | ||
|  |     "level_gate_distribution": "random", | ||
|  |     "level_gate_costs": "random", | ||
|  | 
 | ||
|  |     "keysanity": "random", | ||
|  |     "whistlesanity": "random", | ||
|  |     "beetlesanity": "random", | ||
|  |     "omosanity": "random", | ||
|  |     "animalsanity": "random", | ||
|  |     "itemboxsanity": "random", | ||
|  |     "bigsanity": "random", | ||
|  |     "kart_race_checks": "random", | ||
|  | 
 | ||
|  |     "black_market_slots": "random", | ||
|  |     "black_market_unlock_costs": "random", | ||
|  |     "black_market_price_multiplier": "random", | ||
|  |     "chao_race_difficulty": "random", | ||
|  |     "chao_karate_difficulty": "random", | ||
|  |     "chao_stadium_checks": "random", | ||
|  |     "chao_animal_parts": "random", | ||
|  |     "chao_stats": "random", | ||
|  |     "chao_stats_frequency": "random", | ||
|  |     "chao_stats_stamina": "random", | ||
|  |     "chao_stats_hidden": "random", | ||
|  |     "chao_kindergarten": "random", | ||
|  |     "shuffle_starting_chao_eggs": "random", | ||
|  |     "chao_entrance_randomization": "random", | ||
|  | 
 | ||
|  |     "junk_fill_percentage": "random", | ||
|  |     "trap_fill_percentage": "random", | ||
|  |     "omochao_trap_weight": "random", | ||
|  |     "timestop_trap_weight": "random", | ||
|  |     "confusion_trap_weight": "random", | ||
|  |     "tiny_trap_weight": "random", | ||
|  |     "gravity_trap_weight": "random", | ||
|  |     "exposition_trap_weight": "random", | ||
|  |     "ice_trap_weight": "random", | ||
|  |     "slow_trap_weight": "random", | ||
|  |     "cutscene_trap_weight": "random", | ||
|  |     "reverse_trap_weight": "random", | ||
|  |     "literature_trap_weight": "random", | ||
|  |     "controller_drift_trap_weight": "random", | ||
|  |     "poison_trap_weight": "random", | ||
|  |     "bee_trap_weight": "random", | ||
|  |     "pong_trap_weight": "random", | ||
|  |     "breakout_trap_weight": "random", | ||
|  |     "fishing_trap_weight": "random", | ||
|  |     "trivia_trap_weight": "random", | ||
|  |     "pokemon_trivia_trap_weight": "random", | ||
|  |     "pokemon_count_trap_weight": "random", | ||
|  |     "number_sequence_trap_weight": "random", | ||
|  |     "light_up_path_trap_weight": "random", | ||
|  |     "pinball_trap_weight": "random", | ||
|  |     "math_quiz_trap_weight": "random", | ||
|  |     "snake_trap_weight": "random", | ||
|  |     "input_sequence_trap_weight": "random", | ||
|  |     "minigame_trap_difficulty": "random", | ||
|  |     "big_fishing_difficulty": "random", | ||
|  | 
 | ||
|  |     "sadx_music": "random", | ||
|  |     "music_shuffle": "random", | ||
|  |     "voice_shuffle": "random", | ||
|  |     "narrator": "random", | ||
|  | 
 | ||
|  |     "sonic_mission_count": "random", | ||
|  |     "sonic_mission_2": "random", | ||
|  |     "sonic_mission_3": "random", | ||
|  |     "sonic_mission_4": "random", | ||
|  |     "sonic_mission_5": "random", | ||
|  | 
 | ||
|  |     "shadow_mission_count": "random", | ||
|  |     "shadow_mission_2": "random", | ||
|  |     "shadow_mission_3": "random", | ||
|  |     "shadow_mission_4": "random", | ||
|  |     "shadow_mission_5": "random", | ||
|  | 
 | ||
|  |     "tails_mission_count": "random", | ||
|  |     "tails_mission_2": "random", | ||
|  |     "tails_mission_3": "random", | ||
|  |     "tails_mission_4": "random", | ||
|  |     "tails_mission_5": "random", | ||
|  | 
 | ||
|  |     "eggman_mission_count": "random", | ||
|  |     "eggman_mission_2": "random", | ||
|  |     "eggman_mission_3": "random", | ||
|  |     "eggman_mission_4": "random", | ||
|  |     "eggman_mission_5": "random", | ||
|  | 
 | ||
|  |     "knuckles_mission_count": "random", | ||
|  |     "knuckles_mission_2": "random", | ||
|  |     "knuckles_mission_3": "random", | ||
|  |     "knuckles_mission_4": "random", | ||
|  |     "knuckles_mission_5": "random", | ||
|  | 
 | ||
|  |     "rouge_mission_count": "random", | ||
|  |     "rouge_mission_2": "random", | ||
|  |     "rouge_mission_3": "random", | ||
|  |     "rouge_mission_4": "random", | ||
|  |     "rouge_mission_5": "random", | ||
|  | 
 | ||
|  |     "kart_mission_count": "random", | ||
|  |     "kart_mission_2": "random", | ||
|  |     "kart_mission_3": "random", | ||
|  |     "kart_mission_4": "random", | ||
|  |     "kart_mission_5": "random", | ||
|  | 
 | ||
|  |     "cannons_core_mission_count": "random", | ||
|  |     "cannons_core_mission_2": "random", | ||
|  |     "cannons_core_mission_3": "random", | ||
|  |     "cannons_core_mission_4": "random", | ||
|  |     "cannons_core_mission_5": "random", | ||
|  | 
 | ||
|  |     "ring_link": "random", | ||
|  |     "trap_link": "random", | ||
|  |     "death_link": "random", | ||
|  | } | ||
|  | 
 | ||
|  | sa2b_options_presets: Dict[str, Dict[str, Any]] = { | ||
|  |     "Minsanity": minsanity, | ||
|  |     "Chao-centric": chao_centric, | ||
|  |     "Allsanity No Chao": allsanity_no_chao, | ||
|  |     "Allsanity": allsanity, | ||
|  |     "All Random": all_random, | ||
|  | } |