Fixes End Turn Speed Order (#8289)

This commit is contained in:
Alex 2025-11-19 15:14:59 +01:00 committed by GitHub
parent 0f4d325467
commit 39ffda4245
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 12 deletions

View File

@ -121,19 +121,9 @@ static bool32 HandleEndTurnOrder(u32 battler)
gBattleTurnCounter++;
gBattleStruct->endTurnEventsCounter++;
u32 i, j;
for (i = 0; i < gBattlersCount; i++)
{
for (u32 i = 0; i < gBattlersCount; i++)
gBattlerByTurnOrder[i] = i;
}
for (i = 0; i < gBattlersCount - 1; i++)
{
for (j = i + 1; j < gBattlersCount; j++)
{
if (GetWhichBattlerFaster(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], FALSE) == -1)
SwapTurnOrder(i, j);
}
}
SortBattlersBySpeed(gBattlerByTurnOrder, FALSE);
return effect;
}

View File

@ -29,3 +29,27 @@ DOUBLE_BATTLE_TEST("End Turn Effects: First Event Block is executed correctly")
}
}
DOUBLE_BATTLE_TEST("End Turn Effects: Effects are applied by Speed Order")
{
GIVEN {
PLAYER(SPECIES_WYNAUT) { MaxHP(200); HP(100); Speed(3); }
PLAYER(SPECIES_RILLABOOM) { MaxHP(200); HP(100); Speed(1); Ability(ABILITY_GRASSY_SURGE); }
OPPONENT(SPECIES_MEWTWO) { MaxHP(200); HP(100); Speed(2); }
OPPONENT(SPECIES_WOBBUFFET) { MaxHP(200); HP(100); Speed(4); }
} WHEN {
TURN {
MOVE(opponentLeft, MOVE_FAKE_OUT, target: playerLeft);
MOVE(playerRight, MOVE_FAKE_OUT, target: opponentRight);
}
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_FAKE_OUT, opponentLeft);
HP_BAR(playerLeft);
ANIMATION(ANIM_TYPE_MOVE, MOVE_FAKE_OUT, playerRight);
HP_BAR(opponentRight);
HP_BAR(opponentRight);
HP_BAR(playerLeft);
HP_BAR(opponentLeft);
HP_BAR(playerRight);
}
}