Fixes repeated learning of level up moves (#6981)

This commit is contained in:
Alex 2025-05-26 23:15:16 +02:00 committed by GitHub
parent 46e2e676c6
commit 983f8e34a1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 4 deletions

View File

@ -385,7 +385,8 @@ struct BattleCallbacksStack
struct StatsArray
{
u16 stats[NUM_STATS];
u16 level;
u16 level:15;
u16 learnMultipleMoves:1;
};
struct BattleResources

View File

@ -5155,6 +5155,7 @@ static void Cmd_getexp(void)
gBattleResources->beforeLvlUp->stats[STAT_SPATK] = GetMonData(&gPlayerParty[*expMonId], MON_DATA_SPATK);
gBattleResources->beforeLvlUp->stats[STAT_SPDEF] = GetMonData(&gPlayerParty[*expMonId], MON_DATA_SPDEF);
gBattleResources->beforeLvlUp->level = currLvl;
gBattleResources->beforeLvlUp->learnMultipleMoves = FALSE;
BtlController_EmitExpUpdate(gBattleStruct->expGetterBattlerId, B_COMM_TO_CONTROLLER, *expMonId, gBattleStruct->battlerExpReward);
MarkBattlerForControllerExec(gBattleStruct->expGetterBattlerId);
@ -8501,11 +8502,13 @@ static void Cmd_handlelearnnewmove(void)
u16 learnMove = MOVE_NONE;
u32 monId = gBattleStruct->expGetterMonId;
u32 currLvl = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
if (B_LEVEL_UP_NOTIFICATION >= GEN_9)
if (!gBattleResources->beforeLvlUp->learnMultipleMoves && gBattleResources->beforeLvlUp->level != (currLvl - 1))
gBattleResources->beforeLvlUp->learnMultipleMoves = TRUE;
if (B_LEVEL_UP_NOTIFICATION >= GEN_9 && gBattleResources->beforeLvlUp->learnMultipleMoves)
{
u32 currLvl = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
while (gBattleResources->beforeLvlUp->level <= currLvl)
{
learnMove = MonTryLearningNewMoveAtLevel(&gPlayerParty[monId], cmd->isFirstMove, gBattleResources->beforeLvlUp->level);