Fix Assist to account for temporarily changed moves in Gen 5+ (#9287)

This commit is contained in:
GGbond 2026-02-21 18:46:51 +08:00 committed by GitHub
parent ccf71d2d6a
commit ae3369e87f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 38 additions and 2 deletions

View File

@ -11215,11 +11215,21 @@ static u32 GetAssistMove(void)
u32 move = MOVE_NONE;
s32 chooseableMovesNo = 0;
struct Pokemon *party;
u8 battlerByPartyId[PARTY_SIZE];
u16 *validMoves = Alloc(sizeof(u16) * PARTY_SIZE * MAX_MON_MOVES);
if (validMoves != NULL)
{
party = GetBattlerParty(gBattlerAttacker);
for (u32 i = 0; i < PARTY_SIZE; i++)
battlerByPartyId[i] = MAX_BATTLERS_COUNT;
for (u32 battler = 0; battler < gBattlersCount; battler++)
{
if (GetBattlerSide(battler) != GetBattlerSide(gBattlerAttacker))
continue;
if (gBattlerPartyIndexes[battler] < PARTY_SIZE)
battlerByPartyId[gBattlerPartyIndexes[battler]] = battler;
}
for (u32 monId = 0; monId < PARTY_SIZE; monId++)
{
@ -11232,7 +11242,12 @@ static u32 GetAssistMove(void)
for (u32 moveId = 0; moveId < MAX_MON_MOVES; moveId++)
{
u16 move = GetMonData(&party[monId], MON_DATA_MOVE1 + moveId);
u16 move;
if (battlerByPartyId[monId] != MAX_BATTLERS_COUNT)
move = gBattleMons[battlerByPartyId[monId]].moves[moveId];
else
move = GetMonData(&party[monId], MON_DATA_MOVE1 + moveId);
if (IsMoveAssistBanned(move))
continue;

View File

@ -12,7 +12,6 @@ TO_DO_BATTLE_TEST("Assist can call moves with no PP left");
TO_DO_BATTLE_TEST("Assist can call moves from a fainted party member");
TO_DO_BATTLE_TEST("Assist can call moves that are blocked to its partners"); // Eg. double battle parter blocked by Disable
TO_DO_BATTLE_TEST("Assist can only call the original moves of a Transformed partner (Gen4 only)");
TO_DO_BATTLE_TEST("Assist can only call the current moves of a Transformed partner (Gen5+)");
TO_DO_BATTLE_TEST("Assist cannot call a Mimicked move (Gen4 only)");
TO_DO_BATTLE_TEST("Assist can call a Mimicked move but not the original Mimic (Gen5+)");
TO_DO_BATTLE_TEST("Assist can call moves in unhatched Eggs (Gen5 only)");
@ -57,3 +56,25 @@ SINGLE_BATTLE_TEST("Assisted move triggers correct weakness berry")
ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player);
}
}
DOUBLE_BATTLE_TEST("Assist can only call the current moves of a Transformed partner (Gen5+)")
{
GIVEN {
ASSUME(GetMoveEffect(MOVE_TRANSFORM) == EFFECT_TRANSFORM);
PLAYER(SPECIES_WOBBUFFET) { Speed(3); Moves(MOVE_ASSIST); }
PLAYER(SPECIES_DITTO) { Speed(4); Moves(MOVE_TRANSFORM); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_SCRATCH); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(1); }
} WHEN {
TURN {
MOVE(playerRight, MOVE_TRANSFORM, target: opponentLeft);
MOVE(playerLeft, MOVE_ASSIST);
MOVE(opponentLeft, MOVE_SCRATCH, target: playerRight);
}
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_TRANSFORM, playerRight);
ANIMATION(ANIM_TYPE_MOVE, MOVE_ASSIST, playerLeft);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft);
}
}