Skip to content

Dechrissen/dexelect

Repository files navigation

Dexelect

Dex (as in Pokédex) + elect / select = Dexelect

Buy Me a Coffee at ko-fi.com
Download Dexelect Solus Discord server

Dexelect – Progression-aware Party Generator

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 GUI sample output

Table of Contents

  1. Introduction
  2. Currently supported games
  3. Installation
  4. Usage
  5. Credits
  6. Support the app

Introduction

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.

Currently supported games

Vanilla

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

Romhacks

Gen Game Supported
1 Solus RGB

Implementation quirks

  • 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.

Installation

Option 1: Download (Windows/Linux)

  1. Download and extract dexelect-<version>-<platform>.zip
  2. Run dexelect.exe on Windows, or ./dexelect on Linux
  3. Linux only (optional): After extracting, run ./install.sh to 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).

Option 2: Build the binary (Windows/Linux)

  • Build only (Windows/Linux): git clone https://github.com/Dechrissen/dexelect.git && cd dexelect && ./scripts/build.sh. Output binary will be in dist/dexelect/ (run ./dexelect on Linux; dexelect.exe on 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.

Option 3: Run from source (terminal)

Requires Python 3.10+.

  1. git clone https://github.com/Dechrissen/dexelect.git
  2. cd dexelect
  3. pip install -r requirements.txt (virtual environment recommended)
  4. (Optional) python main.py --fetch-sprites to enable sprite display in the GUI
  5. python main.py to run the GUI

Usage

Using the GUI (python main.py)

  • 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 .txt file
  • 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.

Using the CLI app (python main.py --ui=cli)

  • ENTER – Generate a party with the current settings
  • G – Open the 'Supported Games' menu to switch current game
  • M – Open the 'Generation Mode' menu to change the party generation mode
  • P – 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 menu
  • Q – Quit the app

Modifying config settings for the CLI 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.

Credits

  • Quadrixis – assistance with progression data planning and app testing

Support Dexelect

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

Contributing

If you'd like to add support for a missing game or romhack, see CONTRIBUTING.md.

License

Dexelect is licensed under the MIT License (see LICENSE).

Disclaimer on LLM usage

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).

About

Progression-aware Pokémon party generator

Topics

Resources

License

Contributing

Stars

5 stars

Watchers

2 watching

Forks

Sponsor this project

Contributors