Fix Baton Pass breaking on Memento (#4773)

* Fix Baton Pass breaking on Memento

* doubled headers
This commit is contained in:
DizzyEggg 2024-06-12 13:17:18 +02:00 committed by GitHub
parent 251019d63d
commit a17259763c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 30 additions and 2 deletions

View file

@ -7032,11 +7032,15 @@ static void Cmd_openpartyscreen(void)
if (gAbsentBattlerFlags & gBitTable[battlerOpposite])
battlerOpposite ^= BIT_FLANK;
// Make sure we're checking a valid battler. In edge case scenarios - battler could be absent and battlerOpposite would become a non-existent one softlocking the game.
if (battlerOpposite < gBattlersCount)
{
BtlController_EmitLinkStandbyMsg(battlerOpposite, BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(battlerOpposite);
}
}
}
}
}
static void Cmd_switchhandleorder(void)

View file

@ -1,6 +1,30 @@
#include "global.h"
#include "test/battle.h"
ASSUMPTIONS
{
ASSUME(gMovesInfo[MOVE_BATON_PASS].effect == EFFECT_BATON_PASS);
}
// This softlocked the game before.
SINGLE_BATTLE_TEST("Baton Pass used after Memento works correctly")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WYNAUT);
OPPONENT(SPECIES_CATERPIE);
} WHEN {
TURN { MOVE(player, MOVE_MEMENTO); SEND_OUT(player, 1); MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(opponent, 1); }
} SCENE {
MESSAGE("Wobbuffet used Memento!");
MESSAGE("Wobbuffet fainted!");
MESSAGE("Foe Wynaut used Baton Pass!");
MESSAGE("2 sent out Caterpie!");
MESSAGE("Go! Wobbuffet!");
}
}
TO_DO_BATTLE_TEST("Baton Pass switches out the user");
TO_DO_BATTLE_TEST("Baton Pass fails if there's no valid party Pokémon left");
TO_DO_BATTLE_TEST("Baton Pass passes both positive and negative stat changes");