/skytemple-randomizer

i will spend like 5 minutes trying to look at android stuff

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

logo

SkyTemple Randomizer

Build Status Localization Progress Version Downloads License (GPLv3) Supported Python versions Discord

Randomizer for Pokémon Mystery Dungeon Explorers of Sky.

It is available for Linux, macOS and Windows.

Downloads

Install on Flathub

Frontends

GTK frontend

When installing from source, you probably want to install the "gtk" extra (pip install -e '.[gtk]'), in order to have the actual GUI functional.

The GTK frontend requires GTK 4.14+, all related libraries and libadwaita 1.5+ to be installed.

When installing this way, the GUI can be started with skytemple_randomizer gui or python -m skytemple.randomizer.main gui. The command takes an optional argument, the path to a ROM to open.

Build

Install the required GTK and Adwaita versions. Under Windows, use gvsbuild in at least version 2024.4.0.

In addition to normally installing the Python package in dev mode, you also need to make sure you have all submodules checked out. After this you need to compile all MO files (localizations) and Blueprint Files to XML UI files. To do that:

  • Linux, possibly MacOS: make
  • Linux/MacOS without make: ./build-blp-to-ui.sh && installer/generate-mo.sh
  • Windows: .\build-blp-to-ui.ps1 with PowerShell and installer\generate-mo.sh with an MSys2 environment bash shell. Gettext must be available.

If you are working with the UI files you may want to use the Blueprint Compiler Language Server or setup file watchers to compile BLP files to UI files. More info about Blueprint Compiler can be found on its website: https://jwestman.pages.gitlab.gnome.org/blueprint-compiler/

CLI

SkyTemple Randomizer can be used via CLI. It's available via skytemple_randomizer cli or python -m skytemple.randomizer.main cli.

Its documentation can be found in CLI_API.md.

API

You can also use SkyTemple Randomizer as a Python API. See the skytemple_randomizer.randomizer_thread for the entrypoint (specifically the class RandomizerThread). You will need to implement your own AbstractFrontend. The passed in Status object can be used to monitor the status of the randomization for progress display. See the GTK implementation for reference on how to use all of this.

See also

Source repository for the Flatpak: https://github.com/flathub/org.skytemple.Randomizer

Ko-Fi