Move Relearner as an option in the Pokémon Party Screen (
Emerald)
In Pokémon Legends Arceus, a new addition was made to change a Pokémon's moveset from the Party Menu. This adds this feature to Pokeemerald.
First, we define some stuff:
We go to include/flags.h and we replace any flag with the _UNUSED nametag with this:
Then, we go to include/strings.h, and we add this after the last one:
Code:
extern const u8 gText_Moves_Menu[];
After that, we go to src/strings.c, and we add afer the last one:
Code:
const u8 gText_Moves_Menu[] = _("Change Moves");
Then, we go to include/party_menu.h and we add:
Code:
void CB2_ReturnToPartyMenuFromSummaryScreen(void);
Then, we go to src/data/party_menu.h and we add:
Anywhere in the the enum section with the menus. It's the one with "MENU_SUMMARY".
After that, we search for "[MENU_SUMMARY] = {gText_Summary5, CursorCb_Summary}," and we add underneath:
Code:
[MENU_MOVES] = {gText_Moves_Menu, CursorCb_Moves},
Then, we go to src/party_menu.c:
We add on the top "#include move_relearner.h" where all the other includes are
We search for "u8 actions[8];" and we change it with "u8 actions[10];"
We search for "static void CB2_ReturnToPartyMenuFromSummaryScreen(void);" and we delete the line entirely
We search for "static void CursorCb_Summary(u8);" and we add right after:
Code:
static void CursorCb_Moves(u8);
Then, we search for "static void CB2_ReturnToPartyMenuFromSummaryScreen" and we delete de "static" part
then, we search for CursorCb_Summary(u8 taskId) and right after we add:
Code:
static void CursorCb_Moves(u8 taskId)
{
PlaySE(SE_SELECT);
FlagSet(FLAG_PARTY_MOVES);
gSpecialVar_0x8004 = gPartyMenu.slotId;
gSpecialVar_0x8005 = GetNumberOfRelearnableMoves(&gPlayerParty[gSpecialVar_0x8004]);
DisplayPartyPokemonDataForRelearner(gSpecialVar_0x8004);
TeachMoveRelearnerMove();
sPartyMenuInternal->exitCallback = TeachMoveRelearnerMove;
Task_ClosePartyMenu(taskId);
}
Then, we search "AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_SWITCH);" and right under, but outside de "if" declaration, we add:
Code:
if (GetNumberOfRelearnableMoves(&mons[slotId]) != 0) {
AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_MOVES);
}
(It should look like this:)
Then, we go to scr/move_relearner.c, and we add an include like this at the start:
#include "party_menu.h"
Lastly, we search for "SetMainCallback2(CB2_ReturnToField);" and we replace the line for:
Code:
if (FlagGet(FLAG_PARTY_MOVES))
{
CB2_ReturnToPartyMenuFromSummaryScreen();
FlagClear(FLAG_PARTY_MOVES);
}
else
{
SetMainCallback2(CB2_ReturnToField);
}
If we want to add PLA's PP tracking system, so we can´t infinetly restore our PP's later on, we have to do this:
And then, we should have this! (ignore the "nickname" addition)
This gif shows that the option only appears if the Pokémon has any moves to relearn.
This addition does not add the option to make pokemon relearn moves they've been taught via TMs, only level-up moves are avaible.