Fix Assist to account for temporarily changed moves in Gen 5+ (#9287)
This commit is contained in:
parent
ccf71d2d6a
commit
ae3369e87f
@ -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;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user