Fixes repeated learning of level up moves (#6981)
This commit is contained in:
parent
46e2e676c6
commit
983f8e34a1
@ -385,7 +385,8 @@ struct BattleCallbacksStack
|
||||
struct StatsArray
|
||||
{
|
||||
u16 stats[NUM_STATS];
|
||||
u16 level;
|
||||
u16 level:15;
|
||||
u16 learnMultipleMoves:1;
|
||||
};
|
||||
|
||||
struct BattleResources
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user