Dex (as in Pokédex) + elect / select = Dexelect
Dexelect is a tool for generating (prescribing) a random, progression-faithful team 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 |
| 5 | Black | Planned |
| 5 | White | Planned |
| 5 | Black 2 | Planned |
| 5 | White 2 | Planned |
| 6 | X | Planned |
| 6 | Y | Planned |
| Gen | Game | Supported |
|---|---|---|
| 1 | Solus RGB | ✔ |
-
Munchlax trees (click to show/hide)
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.
Click to show/hide
- 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).
Click to show/hide
- 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.
Click to show/hide
Requires Python 3.11+.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 (optionally add--ui=clifor CLI or--ui=webfor local Flask web app)
Run python main.py --help for available flags.
Click to show/hide
- 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 team
- Change sphere mode and view per-sphere location lists in the 'Spheres' tab
- Modify settings in the 'Config' tab to customize output party restrictions
Click to show/hide
Visit the live Dexelect web app.
Alternatively, run python main.py --ui=web and visit the url:port shown in your terminal.
The web app is organized into a main header (with Game selector and 'Generate Party' button) and tabs for navigation.
- Click 'Generate Party' to generate a team
- Tabs
- Party – Where the generated party will be displayed
- Setup – For changing global settings (generation mode, party size, etc.)
- Spheres – For changing sphere modes and viewing per-sphere location lists
- Config – For modifying settings to customize output party restrictions
- Help – Display the help dialog
Click to show/hide
Run python main.py --ui=cli.
ENTER– Generate a team with the current settingsG– Open the 'Supported Games' menu to switch current gameM– Open the 'Generation Mode' menu to change the team 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
- Jade Lune – logo and icon design
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 wrappers (local Tk GUI and web app) were created using LLMs; as such the directories that were exclusively authored by an LLM in this project are ui/gui/ and ui/web/. Development work on this project is sometimes carried out utilizing LLMs for certain tedious tasks such as data file creation and formatting (the .yaml files in /data).
Pokémon and all respective names and sprites are © and ™ of Nintendo, Game Freak, and The Pokémon Company. Dexelect is an unofficial fan project and is not affiliated with, endorsed, or sponsored by them.
