Code Monkey home page Code Monkey logo

explorerscript's Introduction

logo

SkyTemple

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

ROM hacking tool for Pokémon Mystery Dungeon Explorers of Sky.

It is available for Linux, macOS and Windows.

It includes a Python library for editing the ROM through Python (skytemple-files) and a debugger / script editor is integrated into the UI of SkyTemple (skytemple-ssb-debugger). Inside the debugger you can edit the game's scripts via the programming language ExplorerScript.

Ko-Fi

Support and Features

See the Project Pokémon forums page.

Windows & macOS

To download SkyTemple for Windows and macOS head over to the download page or Project Pokémon.

If you want to set up SkyTemple for development, see the "BUILDING_WINDOWS.md" or "BUILDING_MACOS.md" file.

Linux

Flatpak

SkyTemple is distributed as a Flatpak on Flathub for all major Linux distributions.

Install on Flathub

This Flatpak contains everything needed to use all SkyTemple features.

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

Manual

The Linux version can be installed manually/"natively" via Pip.

For this Python 3.9+ must be installed and GTK+ 3 (which you most likely both have). Additionally GtkSourceView 4 is required (package gtksourceview4 on Arch and libgtksourceview-4-dev on Ubuntu).

Then install SkyTemple via pip:

pip install --upgrade skytemple[eventserver,discord]

You may need to run pip3 instead and/or need to update pip by running:

pip3 install --upgrade pip

After this, you can run skytemple to run it. If this doesn't work, you don't have ~/.local/bin in your PATH. Run ~/.local/bin/skytemple instead.

To be able to apply patches, you need to install armips. Sadly they don't provide builds. However for Arch Linux a version is available through the AUR.

If you want to set up SkyTemple for development, clone the repos and install in editable mode instead. See the steps 7 and onward in "BUILDING_WINDOWS.md".

Star History

Star History Graph

explorerscript's People

Contributors

dependabot[bot] avatar dotlambda avatar end45 avatar kamilaborowska avatar thecapypara avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

explorerscript's Issues

KeyError caused by call or jump

Originally reported at https://discord.com/channels/710190644152369162/1002325768682090636/1002330772272857239

The following code triggers a KeyError after compiling the script, deleting the original ExplorerScript source and trying to decompile it again:

def 0 {
    call @something;
    end;
    §something;
    return;
}

The call opcode can be replaced with a jump, both produce the same result.

The exception is raised at

next_ops.append((flow_level + 1, label_indices[op.label.id]))
, because label_indices is empty.
The reason why it's empty is because no elements were added to it at , since there weren't any SsbLabel in the list of opcodes.

Add range check for WaitExecute opcodes

Originally reported at https://discord.com/channels/710190644152369162/724746586072023182/1002499328184692807

Seems like SkyTemple allows specifying out-of-bounds IDs to WaitExecute commands (in particular, an actor ID where an object ID is expected and vice-versa). The script compiles and works, probably because actors and objects are read the same way by the game. However, trying to reopen a script with out-of-bounds IDs in SkyTemple causes an error.

It would be a good idea to add some validation to the parameters of these opcodes (and also to other opcodes that might take entity IDs that are supposed to be in a certain range, if there's any) to prevent this.

Some scripts fail decompiling

Example:


ValueError: After a simple opcode there must be exactly 0 or 1 immediate opcode.
     args = ('After a simple opcode there must be exactly 0 or 1 immediate opcode.',)
     with_traceback = <built-in method with_traceback of ValueError object> 

Beep, boop, I'm a bot! This issue was created by @Parakoopa in #skytemple-tester.

Case Menu: Allow macro variables

Currently not allowed in the syntax, and probably not properly implemented


Beep, boop, I'm a bot! This issue was created by @Parakoopa in #scripting-help.

Multi-line strings

Support for strings that go over one line using actual line breaks. Automatic trimming of spaces?


Beep, boop, I'm a bot! This issue was created by @Parakoopa in #skytemple.

Multiple statements in with blocks

Allow multiple non-branching statements in with-Blocks for easier readability (generate multiple lives/object/performer opcodes, one for each instruction


Beep, boop, I'm a bot! This issue was created by @Parakoopa in #rom-hacking-support.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.