| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | """
 | 
					
						
							|  |  |  | Option definitions for Pokemon Emerald | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | from dataclasses import dataclass | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  | from Options import (Choice, DeathLink, DefaultOnToggle, OptionSet, NamedRange, Range, Toggle, FreeText, | 
					
						
							| 
									
										
										
										
											2025-01-27 07:24:26 -08:00
										 |  |  |                      PerGameCommonOptions, OptionGroup, StartInventory) | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | from .data import data | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Goal(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Determines what your goal is to consider the game beaten. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Champion: Become the champion and enter the hall of fame | 
					
						
							|  |  |  |     - Steven: Defeat Steven in Meteor Falls | 
					
						
							|  |  |  |     - Norman: Defeat Norman in Petalburg Gym | 
					
						
							|  |  |  |     - Legendary Hunt: Defeat or catch legendary pokemon (or whatever was randomized into their encounters) | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Goal" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_champion = 0 | 
					
						
							|  |  |  |     option_steven = 1 | 
					
						
							|  |  |  |     option_norman = 2 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     option_legendary_hunt = 3 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeBadges(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Adds Badges to the pool. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Vanilla: Gym leaders give their own badge | 
					
						
							|  |  |  |     - Shuffle: Gym leaders give a random badge | 
					
						
							|  |  |  |     - Completely Random: Badges can be found anywhere | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Badges" | 
					
						
							|  |  |  |     default = 2 | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_shuffle = 1 | 
					
						
							|  |  |  |     option_completely_random = 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeHms(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Adds HMs to the pool. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Vanilla: HMs are at their vanilla locations | 
					
						
							|  |  |  |     - Shuffle: HMs are shuffled among vanilla HM locations | 
					
						
							|  |  |  |     - Completely Random: HMs can be found anywhere | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize HMs" | 
					
						
							|  |  |  |     default = 2 | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_shuffle = 1 | 
					
						
							|  |  |  |     option_completely_random = 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeKeyItems(DefaultOnToggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Adds most key items to the pool. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     These are usually required to unlock a location or region (e.g. Devon Scope, Letter, Basement Key). | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Key Items" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeBikes(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Adds the Mach Bike and Acro Bike to the pool. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Bikes" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class RandomizeEventTickets(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Adds the event tickets to the pool, which let you access legendaries by sailing from Lilycove. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Event Tickets" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | class RandomizeRods(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Adds fishing rods to the pool. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Fishing Rods" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeOverworldItems(DefaultOnToggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Adds items on the ground with a Pokeball sprite to the pool. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Overworld Items" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeHiddenItems(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Adds hidden items to the pool. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Hidden Items" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeNpcGifts(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Adds most gifts received from NPCs to the pool (not including key items or HMs). | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize NPC Gifts" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class RandomizeBerryTrees(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Adds berry trees to the pool. Empty soil patches are converted to locations and contribute Sitrus Berries to the pool. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Berry Trees" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Dexsanity(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Adding a "caught" pokedex entry gives you an item (catching, evolving, trading, etc.). Only wild encounters are considered logical access to a species. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Blacklisting wild encounters removes the dexsanity location. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  |     Defeating gym leaders provides dex info, allowing you to see where on the map you can catch species you need. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Each pokedex entry adds a Poke Ball, Great Ball, or Ultra Ball to the pool. | 
					
						
							| 
									
										
										
										
											2024-10-28 15:17:25 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     Warning: This adds a lot of locations and will slow you down significantly. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Dexsanity" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Trainersanity(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Defeating a trainer gives you an item. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Trainers are no longer missable. Trainers no longer give you money for winning. Each trainer adds a valuable item (Nugget, Stardust, etc.) to the pool. | 
					
						
							| 
									
										
										
										
											2024-10-28 15:17:25 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     Warning: This adds a lot of locations and will slow you down significantly. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Trainersanity" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | class ItemPoolType(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Determines which non-progression items get put into the item pool. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Shuffled: Item pool consists of shuffled vanilla items | 
					
						
							|  |  |  |     - Diverse Balanced: Item pool consists of random items approximately proportioned according to what they're replacing | 
					
						
							|  |  |  |     - Diverse: Item pool consists of uniformly random (non-unique) items | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Item Pool Type" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_shuffled = 0 | 
					
						
							|  |  |  |     option_diverse_balanced = 1 | 
					
						
							|  |  |  |     option_diverse = 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class HiddenItemsRequireItemfinder(DefaultOnToggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     The Itemfinder is logically required to pick up hidden items. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Require Itemfinder" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class DarkCavesRequireFlash(Choice): | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Determines whether HM05 Flash is logically required to navigate a dark cave. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Require Flash" | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     default = 3 | 
					
						
							|  |  |  |     option_neither = 0 | 
					
						
							|  |  |  |     option_only_granite_cave = 1 | 
					
						
							|  |  |  |     option_only_victory_road = 2 | 
					
						
							|  |  |  |     option_both = 3 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class EliteFourRequirement(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Sets the requirements to challenge the elite four. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Badges: Obtain some number of badges | 
					
						
							|  |  |  |     - Gyms: Defeat some number of gyms | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Elite Four Requirement" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_badges = 0 | 
					
						
							|  |  |  |     option_gyms = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class EliteFourCount(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Sets the number of badges/gyms required to challenge the elite four. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Elite Four Count" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 8 | 
					
						
							|  |  |  |     default = 8 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class NormanRequirement(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Sets the requirements to challenge the Petalburg Gym. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Badges: Obtain some number of badges | 
					
						
							|  |  |  |     - Gyms: Defeat some number of gym leaders | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Norman Requirement" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_badges = 0 | 
					
						
							|  |  |  |     option_gyms = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class NormanCount(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Sets the number of badges/gyms required to challenge the Petalburg Gym. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Norman Count" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 7 | 
					
						
							|  |  |  |     default = 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class LegendaryHuntCatch(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Sets whether legendaries need to be caught to satisfy the Legendary Hunt win condition. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Defeated legendaries can be respawned by defeating the Elite 4. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Legendary Hunt Requires Catching" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class LegendaryHuntCount(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Sets the number of legendaries that must be caught/defeated for the Legendary Hunt goal. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Legendary Hunt Count" | 
					
						
							|  |  |  |     range_start = 1 | 
					
						
							|  |  |  |     range_end = 12 | 
					
						
							|  |  |  |     default = 3 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AllowedLegendaryHuntEncounters(OptionSet): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Sets which legendary encounters can contribute to the Legendary Hunt goal. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Latias will always be at Southern Island. Latios will always be the roamer. The TV broadcast describing the roamer gives you "seen" info for Latios. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     The braille puzzle in Sealed Chamber gives you "seen" info for Wailord and Relicanth. The move tutor in Fortree City always teaches Dig. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Allowed Legendary Hunt Encounters" | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     valid_keys = [ | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |         "Groudon", | 
					
						
							|  |  |  |         "Kyogre", | 
					
						
							|  |  |  |         "Rayquaza", | 
					
						
							|  |  |  |         "Latios", | 
					
						
							|  |  |  |         "Latias", | 
					
						
							|  |  |  |         "Regirock", | 
					
						
							|  |  |  |         "Registeel", | 
					
						
							|  |  |  |         "Regice", | 
					
						
							| 
									
										
										
										
											2024-04-11 16:31:53 -06:00
										 |  |  |         "Ho-Oh", | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |         "Lugia", | 
					
						
							|  |  |  |         "Deoxys", | 
					
						
							|  |  |  |         "Mew", | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     ] | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     default = valid_keys.copy() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | class RandomizeWildPokemon(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Randomizes wild pokemon encounters (grass, caves, water, fishing). | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-28 15:17:25 -07:00
										 |  |  |     Warning: Matching both base stats and type may severely limit the variety for certain pokemon. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Vanilla: Wild encounters are unchanged | 
					
						
							|  |  |  |     - Match Base Stats: Wild pokemon are replaced with species with approximately the same bst | 
					
						
							|  |  |  |     - Match Type: Wild pokemon are replaced with species that share a type with the original | 
					
						
							|  |  |  |     - Match Base Stats and Type: Apply both Match Base Stats and Match Type | 
					
						
							|  |  |  |     - Completely Random: There are no restrictions | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Wild Pokemon" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_match_base_stats = 1 | 
					
						
							|  |  |  |     option_match_type = 2 | 
					
						
							|  |  |  |     option_match_base_stats_and_type = 3 | 
					
						
							|  |  |  |     option_completely_random = 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class WildEncounterBlacklist(OptionSet): | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     Prevents listed species from appearing in the wild when wild encounters are randomized. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     May be overridden if enforcing other restrictions in combination with this blacklist is impossible. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Use "_Legendaries" as a shortcut for all legendary pokemon. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     display_name = "Wild Encounter Blacklist" | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     valid_keys = ["_Legendaries"] + sorted([species.label for species in data.species.values()]) | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeStarters(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Randomizes the starter pokemon in Professor Birch's bag. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Vanilla: Starters are unchanged | 
					
						
							|  |  |  |     - Match Base Stats: Starters are replaced with species with approximately the same bst | 
					
						
							|  |  |  |     - Match Type: Starters are replaced with species that share a type with the original | 
					
						
							|  |  |  |     - Match Base Stats and Type: Apply both Match Base Stats and Match Type | 
					
						
							|  |  |  |     - Completely Random: There are no restrictions | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Starters" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_match_base_stats = 1 | 
					
						
							|  |  |  |     option_match_type = 2 | 
					
						
							|  |  |  |     option_match_base_stats_and_type = 3 | 
					
						
							|  |  |  |     option_completely_random = 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class StarterBlacklist(OptionSet): | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     Prevents listed species from appearing as starters when starters are randomized. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     May be overridden if enforcing other restrictions in combination with this blacklist is impossible. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Use "_Legendaries" as a shortcut for all legendary pokemon. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     display_name = "Starter Blacklist" | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     valid_keys = ["_Legendaries"] + sorted([species.label for species in data.species.values()]) | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeTrainerParties(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Randomizes the parties of all trainers. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-28 15:17:25 -07:00
										 |  |  |     Warning: Matching both base stats and type may severely limit the variety for certain pokemon. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Vanilla: Parties are unchanged | 
					
						
							|  |  |  |     - Match Base Stats: Trainer pokemon are replaced with species with approximately the same bst | 
					
						
							|  |  |  |     - Match Type: Trainer pokemon are replaced with species that share a type with the original | 
					
						
							|  |  |  |     - Match Base Stats and Type: Apply both Match Base Stats and Match Type | 
					
						
							|  |  |  |     - Completely Random: There are no restrictions | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Trainer Parties" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_match_base_stats = 1 | 
					
						
							|  |  |  |     option_match_type = 2 | 
					
						
							|  |  |  |     option_match_base_stats_and_type = 3 | 
					
						
							|  |  |  |     option_completely_random = 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class TrainerPartyBlacklist(OptionSet): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Prevents listed species from appearing in opponent trainers' parties if opponent parties are randomized. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     May be overridden if enforcing other restrictions in combination with this blacklist is impossible. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Use "_Legendaries" as a shortcut for all legendary pokemon. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Trainer Party Blacklist" | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     valid_keys = ["_Legendaries"] + sorted([species.label for species in data.species.values()]) | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ForceFullyEvolved(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     When an opponent uses a pokemon of the specified level or higher, restricts the species to only fully evolved pokemon. | 
					
						
							| 
									
										
										
										
											2024-10-28 15:17:25 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     Only applies when trainer parties are randomized. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Warning: Combining a low value with matched base stats may severely limit the variety for certain pokemon. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Force Fully Evolved" | 
					
						
							|  |  |  |     range_start = 1 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     default = 100 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeLegendaryEncounters(Choice): | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     Randomizes legendary encounters (Rayquaza, Regice, Latias, etc.). The roamer will always be Latios during legendary hunts. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Vanilla: Legendary encounters are unchanged | 
					
						
							|  |  |  |     - Shuffle: Legendary encounters are shuffled between each other | 
					
						
							|  |  |  |     - Match Base Stats: Legendary encounters are replaced with species with approximately the same bst | 
					
						
							|  |  |  |     - Match Type: Legendary encounters are replaced with species that share a type with the original | 
					
						
							|  |  |  |     - Match Base Stats and Type: Apply both Match Base Stats and Match Type | 
					
						
							|  |  |  |     - Completely Random: There are no restrictions | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     display_name = "Randomize Legendary Encounters" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_shuffle = 1 | 
					
						
							|  |  |  |     option_match_base_stats = 2 | 
					
						
							|  |  |  |     option_match_type = 3 | 
					
						
							|  |  |  |     option_match_base_stats_and_type = 4 | 
					
						
							|  |  |  |     option_completely_random = 5 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class RandomizeMiscPokemon(Choice): | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     Randomizes non-legendary static encounters. May grow to include other pokemon like trades or gifts. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Vanilla: Species are unchanged | 
					
						
							|  |  |  |     - Shuffle: Species are shuffled between each other | 
					
						
							|  |  |  |     - Match Base Stats: Species are replaced with species with approximately the same bst | 
					
						
							|  |  |  |     - Match Type: Species are replaced with species that share a type with the original | 
					
						
							|  |  |  |     - Match Base Stats and Type: Apply both Match Base Stats and Match Type | 
					
						
							|  |  |  |     - Completely Random: There are no restrictions | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     display_name = "Randomize Misc Pokemon" | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     default = 0 | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_shuffle = 1 | 
					
						
							|  |  |  |     option_match_base_stats = 2 | 
					
						
							|  |  |  |     option_match_type = 3 | 
					
						
							|  |  |  |     option_match_base_stats_and_type = 4 | 
					
						
							|  |  |  |     option_completely_random = 5 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeTypes(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Randomizes the type(s) of every pokemon. Each species will have the same number of types. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Vanilla: Types are unchanged | 
					
						
							|  |  |  |     - Shuffle: Types are shuffled globally for all species (e.g. every Water-type pokemon becomes Fire-type) | 
					
						
							|  |  |  |     - Completely Random: Each species has its type(s) randomized | 
					
						
							|  |  |  |     - Follow Evolutions: Types are randomized per evolution line instead of per species | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Types" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_shuffle = 1 | 
					
						
							|  |  |  |     option_completely_random = 2 | 
					
						
							|  |  |  |     option_follow_evolutions = 3 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeAbilities(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Randomizes abilities of every species. Each species will have the same number of abilities. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Vanilla: Abilities are unchanged | 
					
						
							|  |  |  |     - Completely Random: Each species has its abilities randomized | 
					
						
							|  |  |  |     - Follow Evolutions: Abilities are randomized, but if a pokemon would normally retain its ability when evolving, the random ability will also be retained | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Abilities" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_completely_random = 1 | 
					
						
							|  |  |  |     option_follow_evolutions = 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AbilityBlacklist(OptionSet): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Prevent species from being given these abilities. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Has no effect if abilities are not randomized. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Ability Blacklist" | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     valid_keys = sorted([ability.label for ability in data.abilities]) | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class LevelUpMoves(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Randomizes the moves a pokemon learns when they reach a level where they would learn a move. Your starter is guaranteed to have a usable damaging move. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Vanilla: Learnset is unchanged | 
					
						
							|  |  |  |     - Randomized: Moves are randomized | 
					
						
							|  |  |  |     - Start with Four Moves: Moves are randomized and all Pokemon know 4 moves at level 1 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Level Up Moves" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_randomized = 1 | 
					
						
							|  |  |  |     option_start_with_four_moves = 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MoveMatchTypeBias(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Sets the probability that a learned move will be forced match one of the types of a pokemon. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     If a move is not forced to match type, it will roll for Normal type bias. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Move Match Type Bias" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MoveNormalTypeBias(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     After it has been decided that a move will not be forced to match types, sets the probability that a learned move will be forced to be the Normal type. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     If a move is not forced to be Normal, it will be completely random. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Move Normal Type Bias" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class MoveBlacklist(OptionSet): | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Prevents species from learning these moves via learnsets, TMs, and move tutors. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     HM moves are already banned. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Move Blacklist" | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     valid_keys = sorted(data.move_labels.keys()) | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class HmCompatibility(NamedRange): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Sets the percent chance that a given HM is compatible with a species. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Some opponents like gym leaders are allowed to use HMs. This option can affect the moves they know. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "HM Compatibility" | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     default = -1 | 
					
						
							|  |  |  |     range_start = 50 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     special_range_names = { | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |         "vanilla": -1, | 
					
						
							|  |  |  |         "full": 100, | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class TmTutorCompatibility(NamedRange): | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Sets the percent chance that a given TM or move tutor is compatible with a species. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Some opponents like gym leaders are allowed to use TMs. This option can affect the moves they know. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     display_name = "TM/Tutor Compatibility" | 
					
						
							|  |  |  |     default = -1 | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     special_range_names = { | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |         "vanilla": -1, | 
					
						
							|  |  |  |         "full": 100, | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class TmTutorMoves(Toggle): | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Randomizes the moves taught by TMs and move tutors. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Some opponents like gym leaders are allowed to use TMs. This option can affect the moves they know. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     display_name = "TM/Tutor Moves" | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class ReusableTmsTutors(Toggle): | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     Sets TMs to not break after use (they remain sellable). Sets move tutors to infinite use. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     display_name = "Reusable TMs and Tutors" | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MinCatchRate(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Sets the minimum catch rate a pokemon can have. Any pokemon with a catch rate below this floor will have it raised to this value. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Legendaries are often in the single digits | 
					
						
							|  |  |  |     Fully evolved pokemon are often double digits | 
					
						
							|  |  |  |     Pidgey is 255 | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Minimum Catch Rate" | 
					
						
							|  |  |  |     range_start = 3 | 
					
						
							|  |  |  |     range_end = 255 | 
					
						
							|  |  |  |     default = 3 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class GuaranteedCatch(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Every throw is guaranteed to catch a wild pokemon. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Guaranteed Catch" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class NormalizeEncounterRates(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Make every slot on an encounter table approximately equally likely. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     This does NOT mean each species is equally likely. In the vanilla game, each species may occupy more than one slot, and slots vary in probability. | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     Species will still occupy the same slots as vanilla, but the slots will be equally weighted. The minimum encounter rate will be 8% (higher in water). | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Normalize Encounter Rates" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | class ExpModifier(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Multiplies gained experience by a percentage. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     100 is default | 
					
						
							|  |  |  |     50 is half | 
					
						
							|  |  |  |     200 is double | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     etc. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Exp Modifier" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 1000 | 
					
						
							|  |  |  |     default = 100 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BlindTrainers(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Trainers will not start a battle with you unless you talk to them. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Blind Trainers" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class PurgeSpinners(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Trainers will rotate in predictable patterns on a set interval instead of randomly and don't turn toward you when you run. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Purge Spinners" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MatchTrainerLevels(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     When you start a battle with a trainer, your party's levels will be automatically set to match that trainer's highest level pokemon. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     The experience you receive will match your party's average actual level, and will only be awarded when you win the battle. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     This is a pseudo-replacement for a level cap and makes every trainer battle a fair fight while still allowing you to level up. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - Off: The vanilla experience | 
					
						
							|  |  |  |     - Additive: The modifier you apply to your team is a flat bonus | 
					
						
							|  |  |  |     - Multiplicative: The modifier you apply to your team is a percent bonus | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Match Trainer Levels" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_off = 0 | 
					
						
							|  |  |  |     option_additive = 1 | 
					
						
							|  |  |  |     option_multiplicative = 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MatchTrainerLevelsBonus(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     A level bonus (or penalty) to apply to your team when matching an opponent's levels. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     When the match trainer levels option is "additive", this value is added to your team's levels during a battle. | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |         For example, if this value is 5 (+5 levels), you'll have a level 25 team against a level 20 team, and a level 45 team against a level 40 team. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  |     When the match trainer levels option is "multiplicative", this is a percent bonus. | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |         For example, if this value is 5 (+5%), you'll have a level 21 team against a level 20 team, and a level 42 team against a level 40 team. | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Match Trainer Levels Modifier" | 
					
						
							|  |  |  |     range_start = -100 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | class DoubleBattleChance(Range): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     The percent chance that a trainer with more than 1 pokemon will be converted into a double battle. | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     If these trainers would normally approach you, they will only do so if you have 2 unfainted pokemon. | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     They can be battled by talking to them no matter what. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Double Battle Chance" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BetterShops(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Pokemarts sell every item that can be obtained in a pokemart (except mail, which is still unique to the relevant city). | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Better Shops" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RemoveRoadblocks(OptionSet): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Removes specific NPCs that normally stand in your way until certain events are completed. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     This can open up the world a bit and make your playthrough less linear, but be careful how many you remove; it may make too much of your world accessible upon receiving Surf. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Remove Roadblocks" | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     valid_keys = [ | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |         "Route 110 Aqua Grunts", | 
					
						
							|  |  |  |         "Route 112 Magma Grunts", | 
					
						
							|  |  |  |         "Route 119 Aqua Grunts", | 
					
						
							|  |  |  |         "Safari Zone Construction Workers", | 
					
						
							|  |  |  |         "Lilycove City Wailmer", | 
					
						
							|  |  |  |         "Aqua Hideout Grunts", | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |         "Seafloor Cavern Aqua Grunt", | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     ] | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ExtraBoulders(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Places strength boulders on Route 115 which block access to Meteor Falls from the beach. | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     This aims to take some power away from Surf by restricting how much it allows you to access. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Extra Boulders" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class ExtraBumpySlope(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Adds a bumpy slope to Route 115 which allows access to Meteor Falls if you have the Acro Bike. | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     This aims to take some power away from Surf by adding a new way to exit the Rustboro area. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Extra Bumpy Slope" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ModifyRoute118(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Changes the layout of Route 118 so that it must be crossed with the Acro Bike instead of Surf. | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     This aims to take some power away from Surf by restricting how much it allows you to access. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Modify Route 118" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | class FreeFlyLocation(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Enables flying to one random location (excluding cities reachable with no items). | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Free Fly Location" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-01-27 07:25:31 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-01-24 22:30:21 +01:00
										 |  |  | class FreeFlyBlacklist(OptionSet): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Disables specific locations as valid free fly locations. | 
					
						
							| 
									
										
										
										
											2025-01-27 07:25:31 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-01-24 22:30:21 +01:00
										 |  |  |     Has no effect if Free Fly Location is disabled. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Free Fly Blacklist" | 
					
						
							|  |  |  |     valid_keys = [ | 
					
						
							| 
									
										
										
										
											2025-01-27 07:25:31 -08:00
										 |  |  |         "Littleroot Town", | 
					
						
							|  |  |  |         "Oldale Town", | 
					
						
							|  |  |  |         "Petalburg City", | 
					
						
							|  |  |  |         "Rustboro City", | 
					
						
							|  |  |  |         "Dewford Town", | 
					
						
							| 
									
										
										
										
											2025-01-24 22:30:21 +01:00
										 |  |  |         "Slateport City", | 
					
						
							|  |  |  |         "Mauville City", | 
					
						
							|  |  |  |         "Verdanturf Town", | 
					
						
							|  |  |  |         "Fallarbor Town", | 
					
						
							|  |  |  |         "Lavaridge Town", | 
					
						
							|  |  |  |         "Fortree City", | 
					
						
							|  |  |  |         "Lilycove City", | 
					
						
							|  |  |  |         "Mossdeep City", | 
					
						
							|  |  |  |         "Sootopolis City", | 
					
						
							|  |  |  |         "Ever Grande City", | 
					
						
							|  |  |  |     ] | 
					
						
							| 
									
										
										
										
											2025-01-27 07:25:31 -08:00
										 |  |  |     default = [ | 
					
						
							|  |  |  |         "Littleroot Town", | 
					
						
							|  |  |  |         "Oldale Town", | 
					
						
							|  |  |  |         "Petalburg City", | 
					
						
							|  |  |  |         "Rustboro City", | 
					
						
							|  |  |  |         "Dewford Town", | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  | class HmRequirements(Choice): | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Sets the requirements to use HMs outside of battle. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     display_name = "HM Requirements" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_fly_without_badge = 1 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TurboA(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Holding A will advance most text automatically. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Turbo A" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ReceiveItemMessages(Choice): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Determines whether you receive an in-game notification when receiving an item. Items can still only be received in the overworld. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     - All: Every item shows a message | 
					
						
							|  |  |  |     - Progression: Only progression items show a message | 
					
						
							|  |  |  |     - None: All items are added to your bag silently (badges will still show). | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Receive Item Messages" | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  |     option_all = 0 | 
					
						
							|  |  |  |     option_progression = 1 | 
					
						
							|  |  |  |     option_none = 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class RemoteItems(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Instead of placing your own items directly into the ROM, all items are received from the server, including items you find for yourself. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     This enables co-op of a single slot and recovering more items after a lost save file (if you're so unlucky). | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     But it changes pickup behavior slightly and requires connection to the server to receive any items. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Remote Items" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeMusic(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Shuffles music played in any situation where it loops. Includes many FRLG tracks. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Music" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RandomizeFanfares(Toggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Shuffles fanfares for item pickups, healing at the pokecenter, etc. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     When this option is enabled, pressing B will interrupt most fanfares. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Randomize Fanfares" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-01-27 07:24:26 -08:00
										 |  |  | class PokemonEmeraldDeathLink(DeathLink): | 
					
						
							|  |  |  |     __doc__ = DeathLink.__doc__ + "\n\n    In Pokemon Emerald, whiting out sends a death and receiving a death causes you to white out." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  | class WonderTrading(DefaultOnToggle): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Allows participation in wonder trading with other players in your current multiworld. Speak with the center receptionist on the second floor of any pokecenter. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Wonder trading NEVER affects logic. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     Certain aspects of a pokemon species are per-game, not per-pokemon. As a result, some things are not retained during a trade, including type, ability, level up learnset, and so on. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     Receiving a pokemon this way does not mark it as found in your pokedex. | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     Trade evolutions do not evolve this way; they retain their modified methods (level ups and item use). | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     display_name = "Wonder Trading" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | class EasterEgg(FreeText): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     Enter certain phrases and something special might happen. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     All secret phrases are something that could be a trendy phrase in Dewford Town. They are case insensitive. | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-06-01 04:14:40 -07:00
										 |  |  |     display_name = "Easter Egg" | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     default = "EMERALD SECRET" | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-01-27 07:24:26 -08:00
										 |  |  | class PokemonEmeraldStartInventory(StartInventory): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Start with these items. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     They will be in your PC, which you can access from your home or a pokemon center. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | @dataclass | 
					
						
							|  |  |  | class PokemonEmeraldOptions(PerGameCommonOptions): | 
					
						
							|  |  |  |     goal: Goal | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     badges: RandomizeBadges | 
					
						
							|  |  |  |     hms: RandomizeHms | 
					
						
							|  |  |  |     key_items: RandomizeKeyItems | 
					
						
							|  |  |  |     bikes: RandomizeBikes | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     event_tickets: RandomizeEventTickets | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     rods: RandomizeRods | 
					
						
							|  |  |  |     overworld_items: RandomizeOverworldItems | 
					
						
							|  |  |  |     hidden_items: RandomizeHiddenItems | 
					
						
							|  |  |  |     npc_gifts: RandomizeNpcGifts | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     berry_trees: RandomizeBerryTrees | 
					
						
							|  |  |  |     dexsanity: Dexsanity | 
					
						
							|  |  |  |     trainersanity: Trainersanity | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     item_pool_type: ItemPoolType | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     require_itemfinder: HiddenItemsRequireItemfinder | 
					
						
							|  |  |  |     require_flash: DarkCavesRequireFlash | 
					
						
							|  |  |  |     elite_four_requirement: EliteFourRequirement | 
					
						
							|  |  |  |     elite_four_count: EliteFourCount | 
					
						
							|  |  |  |     norman_requirement: NormanRequirement | 
					
						
							|  |  |  |     norman_count: NormanCount | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     legendary_hunt_catch: LegendaryHuntCatch | 
					
						
							|  |  |  |     legendary_hunt_count: LegendaryHuntCount | 
					
						
							|  |  |  |     allowed_legendary_hunt_encounters: AllowedLegendaryHuntEncounters | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     wild_pokemon: RandomizeWildPokemon | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     wild_encounter_blacklist: WildEncounterBlacklist | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     starters: RandomizeStarters | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     starter_blacklist: StarterBlacklist | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     trainer_parties: RandomizeTrainerParties | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     trainer_party_blacklist: TrainerPartyBlacklist | 
					
						
							|  |  |  |     force_fully_evolved: ForceFullyEvolved | 
					
						
							|  |  |  |     legendary_encounters: RandomizeLegendaryEncounters | 
					
						
							|  |  |  |     misc_pokemon: RandomizeMiscPokemon | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     types: RandomizeTypes | 
					
						
							|  |  |  |     abilities: RandomizeAbilities | 
					
						
							|  |  |  |     ability_blacklist: AbilityBlacklist | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     level_up_moves: LevelUpMoves | 
					
						
							|  |  |  |     move_match_type_bias: MoveMatchTypeBias | 
					
						
							|  |  |  |     move_normal_type_bias: MoveNormalTypeBias | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     tm_tutor_compatibility: TmTutorCompatibility | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     hm_compatibility: HmCompatibility | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     tm_tutor_moves: TmTutorMoves | 
					
						
							|  |  |  |     reusable_tms_tutors: ReusableTmsTutors | 
					
						
							|  |  |  |     move_blacklist: MoveBlacklist | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     min_catch_rate: MinCatchRate | 
					
						
							|  |  |  |     guaranteed_catch: GuaranteedCatch | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     normalize_encounter_rates: NormalizeEncounterRates | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     exp_modifier: ExpModifier | 
					
						
							|  |  |  |     blind_trainers: BlindTrainers | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     purge_spinners: PurgeSpinners | 
					
						
							|  |  |  |     match_trainer_levels: MatchTrainerLevels | 
					
						
							|  |  |  |     match_trainer_levels_bonus: MatchTrainerLevelsBonus | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     double_battle_chance: DoubleBattleChance | 
					
						
							|  |  |  |     better_shops: BetterShops | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     remove_roadblocks: RemoveRoadblocks | 
					
						
							|  |  |  |     extra_boulders: ExtraBoulders | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     extra_bumpy_slope: ExtraBumpySlope | 
					
						
							|  |  |  |     modify_118: ModifyRoute118 | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     free_fly_location: FreeFlyLocation | 
					
						
							| 
									
										
										
										
											2025-01-24 22:30:21 +01:00
										 |  |  |     free_fly_blacklist: FreeFlyBlacklist | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     hm_requirements: HmRequirements | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     turbo_a: TurboA | 
					
						
							|  |  |  |     receive_item_messages: ReceiveItemMessages | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     remote_items: RemoteItems | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     music: RandomizeMusic | 
					
						
							|  |  |  |     fanfares: RandomizeFanfares | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-01-27 07:24:26 -08:00
										 |  |  |     death_link: PokemonEmeraldDeathLink | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 05:37:10 -06:00
										 |  |  |     enable_wonder_trading: WonderTrading | 
					
						
							| 
									
										
										
										
											2023-11-12 13:39:34 -08:00
										 |  |  |     easter_egg: EasterEgg | 
					
						
							| 
									
										
										
										
											2025-01-27 07:24:26 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     start_inventory: PokemonEmeraldStartInventory | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | OPTION_GROUPS = [ | 
					
						
							|  |  |  |     OptionGroup( | 
					
						
							|  |  |  |         "Item & Location Options", [ | 
					
						
							|  |  |  |             PokemonEmeraldStartInventory, | 
					
						
							|  |  |  |         ], True, | 
					
						
							|  |  |  |     ), | 
					
						
							|  |  |  | ] |