Dex (as in Pokédex) + elect / select = Dexelect
Dexelect is a tool for generating (prescribing) a random, progression-faithful party of Pokémon for use in a challenge playthrough. Customization options are available to curate the output party further.
Dexelect generates (prescribes) a progression-faithful party for use in a playthrough — either to introduce an element of challenge or simply for team inspiration. See the suggested rulesets for some ideas about how to use Dexelect.
The app is universal in that it maintains compatibility with most generations of Pokémon games, and with romhacks that contain changes to game data, such as:
- Pokémon
- Evolution methods
- Locations
See CONTRIBUTING.md if you'd like to add support for a romhack.
| Gen | Game | Supported |
|---|---|---|
| 1 | Red | ✔ |
| 1 | Blue | ✔ |
| 1 | Yellow | Planned |
| 2 | Gold | ✔ |
| 2 | Silver | ✔ |
| 2 | Crystal | Planned |
| 3 | Ruby | ✔ |
| 3 | Sapphire | ✔ |
| 3 | Emerald | Planned |
| 4 | Diamond | ✔ |
| 4 | Pearl | ✔ |
| 4 | Platinum | Planned |
| Gen | Game | Supported |
|---|---|---|
| 1 | Solus RGB | ✔ |
- Munchlax trees – In Diamond/Pearl/Platinum, Munchlax trees are a special case to handle. A random 4/21 total Honey Trees in the game are upgraded to special Munchlax trees in which Munchlax can be encountered 1% of the time. The locations are dependent on Trainer ID and secret ID, so there's no way to know where they are until finding them in a new file. This means there is no reliable point in the game to use as the acquisition point for Munchlax, and the party balance stats will not be 100% accurate. The solution I settled on for Dexelect (since it uses a sphere progression system) was to assume that Munchlax trees are accessible in Sphere 3, since by that point in the game, the probability of having access to at least one of the 4 Munchlax trees is 91% (up from 77% in Sphere 2 and 0% in Sphere 1) which seemed like a high enough probability to rely on for calculating party balance stats.
- Download and extract
dexelect-<version>-<platform>.zip - Run
dexelect.exeon Windows, or./dexelecton Linux - Linux only (optional): After extracting, run
./install.shto register Dexelect with your app launcher. You can then delete the downloaded folder. To update, repeat these steps with the new version (the old one will be overwritten).
- Build only (Windows/Linux):
git clone https://github.com/Dechrissen/dexelect.git && cd dexelect && ./scripts/build.sh. Output binary will be indist/dexelect/(run./dexelecton Linux;dexelect.exeon Windows). - Build and install to register Dexelect with your app launcher (Linux):
git clone https://github.com/Dechrissen/dexelect.git && cd dexelect && ./scripts/build.sh && cd dist/dexelect && ./install.sh
See the build instructions for more details.
Requires Python 3.10+.
git clone https://github.com/Dechrissen/dexelect.gitcd dexelectpip install -r requirements.txt(virtual environment recommended)- (Optional)
python main.py --fetch-spritesto enable sprite display in the GUI python main.pyto run the GUI
- The app is split into sidebar (left) and main window (right). Help option is at the top right.
- Left sidebar:
- The mode can be switched between 'Progression', 'Random (Obtainable)', and 'Random (National Dex)'
- Party size can be adjusted (1–6)
- 'Acquisition Details', 'HM Coverage', and 'Balance Stats' display can each be toggled on or off
- 'Export Party' button exports party to
.txtfile
- Main window:
- 'Generate', 'Spheres', and 'Config' tabs at the top can be switched between
- Click 'Generate Party' (or press Enter) to generate a party
- Change sphere generation mode and view per-sphere location lists in the 'Spheres' tab
- Modify settings in the 'Config' tab to customize output party restrictions
Note
If you are running the standalone binary, the config files are in /_internal/config. They can be modified in a text editor, but the 'Config' tab in the GUI is preferred.
ENTER– Generate a party with the current settingsG– Open the 'Supported Games' menu to switch current gameM– Open the 'Generation Mode' menu to change the party generation modeP– Open the 'Set Party Size' menu to set party size (1–6)R– Reload the config file from disk (after making any config changes while the app is running)H– Display help menuQ– Quit the app
Open /config/config_gen1.yaml (for Gen 1 games for instance). Modify values according to your preferences.
Save the file and then, if the app was running, use the R option in the app to reload.
- Quadrixis – assistance with progression data planning and app testing
Please support Dexelect development! The app is free and open-source, but you can support it in these ways:
- Donate on Ko-fi
- Give this repository a Star ⭐
- Join the Discord
- Share the app with someone who might be interested
If you'd like to add support for a missing game or romhack, see CONTRIBUTING.md.
Dexelect is licensed under the MIT License (see LICENSE).
The core code in this project (i.e., core.py logic and functions, data file format, data structures, classes) was neither designed nor written by an LLM.
The GUI wrapper was created using LLMs; as such the one file that was exclusively authored by an LLM in this project is /ui/gui/app.py. Development work on this project is sometimes carried out utilizing LLMs for certain tedious tasks such as data file creation / formatting (the .yaml files in /data).
