createmon:fix move order when all moves are default (#9261)
Some checks are pending
CI / build (push) Waiting to run
CI / docs_validate (push) Waiting to run
CI / allcontributors (push) Waiting to run

This commit is contained in:
FosterProgramming 2026-02-23 08:18:15 +01:00 committed by GitHub
parent 021a560de0
commit 12d16aad16
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 31 additions and 15 deletions

View File

@ -402,22 +402,38 @@ static u32 ScriptGiveMonParameterized(u8 side, u8 slot, u16 species, u8 level, e
CalculateMonStats(&mon);
// moves
bool32 all_default_flag = TRUE;
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (moves[i] == MOVE_NONE)
if (moves[i] != MOVE_DEFAULT)
{
all_default_flag = FALSE;
break;
if (moves[i] < MOVES_COUNT)
{
SetMonMoveSlot(&mon, moves[i], i);
}
else if (moves[i] == MOVE_DEFAULT)
}
if (all_default_flag)
{
GiveMonInitialMoveset(&mon);
}
else
{
for (i = 0; i < MAX_MON_MOVES; i++)
{
GiveMonDefaultMove(&mon, i);
continue;
}
else
{
assertf(FALSE, "invalid move: %d", moves[i]) {}
if (moves[i] == MOVE_NONE)
break;
if (moves[i] < MOVES_COUNT)
{
SetMonMoveSlot(&mon, moves[i], i);
}
else if (moves[i] == MOVE_DEFAULT)
{
GiveMonDefaultMove(&mon, i);
continue;
}
else
{
assertf(FALSE, "invalid move: %d", moves[i]) {}
}
}
}

View File

@ -354,10 +354,10 @@ TEST("givemon [moves (default)]")
}
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_PYUKUMUKU);
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_LEVEL), 100);
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE1), learnset[learnsetLength - 1].move);
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE2), learnset[learnsetLength - 2].move);
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE3), learnset[learnsetLength - 3].move);
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE4), learnset[learnsetLength - 4].move);
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE1), learnset[learnsetLength - 4].move);
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE2), learnset[learnsetLength - 3].move);
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE3), learnset[learnsetLength - 2].move);
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE4), learnset[learnsetLength - 1].move);
}
TEST("givemon [all]")