Code Monkey home page Code Monkey logo

porymoves's Introduction

PoryMoves

PoryMoves is a program that allows Pokémon decompilation developers to quickly and easily generate the moves that a Pokémon can learn, based on their learnsets across the different core series games. As of right now, this tool is designed for use with the Pokémon Generation 3 decompilation projects.

Features

  • Define TM/HM/TR Moves and Tutor Moves that are available for a given fangame.

  • Define a game to be used for

    • Level Up Moves
    • TM/HM/TR Moves
    • Egg Moves
    • Tutor Moves
  • Export files that be directly input into a decompilation fangame

Why PoryMoves?

Rioluwott is working on a fangame built from pokeemerald-expansion. He wants:

  • Pokémon use their RBY learnsets. For example, this means Charmander does not learn Metal Claw via Level Up.
  • to use the Technical Machine list from Ultra Sun and Ultra Moon.
  • To use the Gen 4 (HGSS, PT, DP) Egg Moves lists.
  • No Tutor Moves at all.

This would normally require Rioluwott to compile:

  • RB and Y learnsets for each Pokémon.
  • USUM TM compatibility for each Pokémon.
  • HGSS, PT, and DP Egg Moves for each Pokémon

And then compile and format all the data into the correct format to be used by pokeemerald. Even with the help of macros, this entire process could take hours.

With PoryMoves, this can be done in 5 minutes!

Installation

PoryMoves does not require any installation to one’s computer or fangame. Simply download the latest release, unzip the resulting file, and run the PoryMoves.exe within.

Compatibility

PoryMoves is only supported on devices running Windows 10 or Windows 11.

Anatomy

A. Shows Folders: Opens the following folders in the user’s default file explorer:

  1. Lists where TM/HM/TR Moves and Tutor Moves are defined
  2. Exported learnsets from PoryMoves.

B. General Options: Impacts all the different kinds of moves. Hover the mouse over the text to check the details of each option.

C. Game Lists: List of main series games that developers can use as a basis for their fangame

D. Move Options: Specific options for different kinds of moves

E. Export Buttons: Exports files for each type of Move.

F. Export Mode: Changes how the export is formatted, depending on what modifications the developer has previously made.

G. Stacking Exports: Allows developers to include other types of moves from a Pokémon in this specific type of learnset.

Usage

Define Input

Open PoryMoves. Click Open Input Folder, and open TM.txt and tutor.txt.

TM.txt takes a list of TMs for your fangame, using the TM constant found in include/constants/items.h. Putting an \* in front of the line designates that TM as a near-universal TM.

In our example, Rioluwott would have to compile this list using an external source, like Bulbapedia, and then convert it to a list of TMs that matches the formatting of pokeemerald. Developers can make a copy of this spreadsheet to be used for this process.

tutor.txt takes a list of moves that will be taught by Move Tutors over the course of a fangame. This list uses the constants found in include/constants/moves.h.

General Options

There are two options here that impact how all moves are exported for a developer’s fangame.

Use updated move defines (RHH): In pokeemerald-expansion, certain move defines were updated to match their current names, such as VICE_GRIP -> VISE_GRIP or FAINT_ATTACK -> FEINT_ATTACK. If you are using expansion, this box should be checked. Unchecking this box will use the default pokeemerald's labels.

Mew can learn exclusive Tutor Moves: In official Pokémon games, Mew is able to learn every TM, HM, TR and Tutor Move except those exclusive to a particular Pokémon or group of Pokémon, such as Draco Meteor and Secret Sword. When this setting is checked, Mew will be able to learn those exclusive moves.

Specific Options

Include Pre-Evo Moves

In Generation 8+, moves learned by previous evolutions but not by future evolutions were prepended to the future evolution’s learnset at Level 1. This option adds this functionality regardless of Generation. One such example is Nidoking’s Horn Drill in Generation 3.

Use Latest Moveset vs Combine Movesets

The option "Use Latest Moveset" will export the latest moveset available of each Pokémon. For example, if Generation 1-9 are selected, Arctozolt will get the moveset from SwSh, which was the latest game it was available in. The option "Combine Movesets(Avg)" will combine all movesets selected into a single one, averaging their levels. This averaging doesn't include evolution, pre-evo or level 1 moves, which are added at the beginning of the list. This was always active for versions 1.0.0-1.4.0. The option "Combine Movesets(Max)" will also combine all movesets selected into a single one, with each move added on their highest level among the selected generations. This also doesn't include evolution, pre-evo or level 1 moves, which are added at the beginning of the list.

Align moves to name

This adjusts the spacing in egg_moves.h to be vertically aligned to the species in question or not. This does not impact the fangame in any way and is purely for the developer's quality of life.

Moves

Developers choose which game learnsets should be used for their fangame. Each game with a unique set of learnsets for this type of move has a separate checkbox.

In our example, Rioluwott’s configuration is shown above.

Export

Once the selected games have been chosen for each Move type, click the Export button at the bottom of each row. This will generate a list that can be seen by clicking on "Open output folder".

Export Modes

For TM/HM/TR moves and Tutor Moves, there are three different modes of exporting.

  • Vanilla Mode: The developer is using pokeemerald, and has not made any changes to the formatting or method by which src/data/pokemon/tmhm_learnsets.h is read. If you are not sure which option to use, use this one.
  • SBird’s TM Refactor: The developer has merged Sbird’s TM Refactor into pokeemerald.
  • SBird’s Tutor Refactor: The developer has merged Sbird’s Tutor Refactor into pokeemerald.
  • RHH 1.0.0: The developer is using pokeemerald-expansion.

Stacking Exports

Checking the boxes Include X Moves will include the moves from X into the export for the row that is being configured.

For example, Pikachu can learn Surf via Move Tutor, but not via TM/HM/TR. If "Include Tutor Moves" is checked under TM/HM/TR moves, then Pikachu will be able to learn Surf via either method.

Incorporate Into ROM

Click on "Open output folder". Copy the files that show in the folder there, and paste them into the fangame’s src/data/pokemon/ folder. Like all changes, the game will need to be compiled again, but then the learnsets will be updated! If changes are desired, open PoryMoves, make changes, export again, and paste the files again.

FAQ and Support

Why didn’t my TMs update?

PoryMoves generates a file that says

Charmander can learn Psycho Boost via TM

,but does not handle

change TM 38 to be Psycho Boost

. This needs to be done manually, following these instructions from Lunos.

Donations

If you got some use out of this feature, please consider donating. We are currently not taking any donations, so please donate to some of our favorite charities.

Contributors

  • Provided the original export code for PoryMoves
  • Added Regieleki, Regidrago, Glastrier, Spectrier, Calyrex, and their forms, as well as new moves from The Crown Tundra and The Isle of Armor
  • Added Pokémon and moves for BDSP, LA, and SV
  • Wrote 1.0 of this documentation

porymoves's People

Contributors

asparaguseduardo avatar graiondilach avatar kittenchilly avatar themitchelson avatar

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.