-
Notifications
You must be signed in to change notification settings - Fork 0
QoL Field Moves
This branch allows developers to make the use of Field Moves more convenient.
This is a combination of the features "Surfboard instead of HM Surf" by Pyredrid, and "HM Items" by NobodySociety.
Thank you very much to Archie for their contribution. Please read more about their contributions and support their projects!
This branch provides the following functionality for the following moves: Cut, Fly, Surf, Strength, Flash, Rock Smash, Waterfall, Dive, Teleport, and Sweet Scent. This branch does not support Milk Drink, Soft-Boiled, or Secret Power.
Developers can give players items that allow them to use Field Moves without a Pokémon or the required Gym Badge.
Players can use Field Moves as long as a Pokémon in their party can learn that field move.
Players do not need to interact with overworld objects or metatiles to activate Field Moves - they will automatically execute when relevant. Once a field move has been used, the game will not display a message for each subsequent use until the player leaves a dungeon.
These instructions assume that you can build pokeemerald, have a basic understanding of C, and are familiar with using the in-game scripting language. If you do not, please watch the tutorials series from Team Aqua's Hideout.
From the root directory of your project, run the following commands in your terminal program of choice:
git remote add psf-emerald https://github.com/PokemonSanFran/pokeemerald/ # This adds our team's pokeemerald branch as a remote repo.
git pull psf-emerald qol_field_moves # This pulls in the qol_field_moves feature branch
If your project is:
- Too far behind
pokeemerald
- Using a different base (pokeemerald-expansion or pokefirered)
- Some other reason that I can't think of
You can manually implement the features using the diff between this branch and vanilla pokeemerald as a guide. You will need to manually edit or create each of these files in your project to properly recreate the feature.
- All of the tools are named
FIELDMOVENAME_TOOL
, and do not have a sprite associated with them. Developers should change the name of the tools, and assign a sprite to them based on the theme of their game.- Team Aqua's Asset Repo has some icons available.
- One variable and four flags are consumed for this feature.
Tools can be used from the Bag or as a Registered Key Item. When a player has a Tool, they are able to use the associated Field move without any restrictions.
When the player meets all of the requirements when interacting with a field obstacle, the game will allow the player to use the relevant field move.
- Player meets the specific requirement for that obstacle, such as facing water, or standing in a dark cave.
- Player has a Pokémon in their party that can learn the field move via one of the following methods
- its associated Technical Machine or Hidden Machine in
pokeemerald
- learns via Level-Up
- learns via Move Tutor
- its associated Technical Machine or Hidden Machine in
NOTE: This does not show the relevant Field Move in the action list on the Pokémon Party Menu.
If a player has met the requirements for Tools OR Can Learn, when the player approaches a relevant obstacle, the player will automatically perform them. If the player has used them more than once in a given location, the effect will automatically start without informing the player first.
Field Move | Can Learn | Tools | Automatic |
---|---|---|---|
Cut | |||
Fly | n/a | n/a | |
Surf | |||
Strength | |||
Flash | n/a | ||
Rock Smash | |||
Waterfall | |||
Dive | n/a | ||
Sweet Scent | n/a | n/a | |
Teleport | n/a | ) | n/a |
These are enabled by uncommenting the relevant lines in include/qol_field_moves.h
.
Option Name | Description | Example |
---|---|---|
QOL_NO_MESSAGING |
When this is enabled, when the player uses a Field Move automatically for the first time on a map, a message or animation does not appear. |
I would love any and all PRs or advice to help solve these issues!
If the player holds a direction after using the Strength Tool, they will continue to walk forward, even if the controls are locked.
I did not have the patience to implement Secret Power, but I will happily accept a PR if somebody else manages to add the appropriate Tool and Automatic behavior.
PartyHasMonLearnsKnowsFieldMove
takes the HM or TM constant as an input, instead of the move itself. If different moves have been assigned to those machines, then it will not appropriately check the move.
n/a
If you have read all of the documentation here and still have questions, please ask a good question in the pokeemerald channel of the pret Discord server. You can tag pkmnsnfrn
and we will try to help if we can.
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.
- Centre for Effective Altruism USA Inc.
- Doctors Without Borders, USA
- The Climate Reality Project
- First Nations Development Institute
- Suggested to only check for
FIELD_MOVE_FAIL
to reduce conflicts with community branches
- Updated branch to properly build when using modern compiler
- Created the original "Surfboard instead of HM Surf"
- Created the original "HM Items"
- Helped give a code review of the feature
- Introduced
ForcePlayerToPerformMovementAction
All changes to this project will be documented in this section. The format is based on Keep a Changelog, and this project tries to adhere to Semantic Versioning.
- A constant has been introduced to
include/qol_field_moves.h
which impacts the Field Move related animations inobject_event_anims.h
which will allow developers to control the speed at which each Field Move occurs. - Secret Power now has Tool, Can Learn and Automatic Use functionality.
- Updated branch to properly build when using modern compiler. (RavePossum) · (453ee86e0)
-
ForcePlayerToPerformMovementAction
is added toUseSurf
which allows the player to instantly start using Surf without waiting for the walking animation to finish. (devolov) · (e3b81e52b) - Fixed mixing of tabs and spaces (devolov) · (48cc36c9b)
-
PartyHasMonLearnsKnowsFieldMove
was not properly returningTRUE
, causing the player to stutter every step. Return cases have been added when success is found. (ardorin) · (300332d)
- If the player used a Field Move while the Map Name Popup was visible, the popup would behave strangely.
HideMapNamePopUpWindow
was added to the beginning of every Field Move, which hides the Map Name Popup before executing the Field Move. (archie#5000) · (9cf4e45)