Fix Commander cleanup after Volt Switch switch-in (#9141)
This commit is contained in:
parent
164e0c7ebc
commit
1e7208dfca
@ -3368,6 +3368,9 @@ const u8* FaintClearSetData(u32 battler)
|
||||
if (gBattleStruct->battlerState[battler].commanderSpecies != SPECIES_NONE)
|
||||
{
|
||||
u32 partner = BATTLE_PARTNER(battler);
|
||||
// Clear commander state immediately so a replacement doesn't inherit it.
|
||||
gBattleStruct->battlerState[battler].commanderSpecies = SPECIES_NONE;
|
||||
gBattleMons[partner].volatiles.semiInvulnerable = STATE_NONE;
|
||||
if (IsBattlerAlive(partner))
|
||||
{
|
||||
BtlController_EmitSpriteInvisibility(partner, B_COMM_TO_CONTROLLER, FALSE);
|
||||
|
||||
@ -380,6 +380,7 @@ DOUBLE_BATTLE_TEST("Commander Tatsugiri does not attack if Dondozo faints the sa
|
||||
DOUBLE_BATTLE_TEST("Commander Tatsugiri does not get hit by Dragon Darts when a commanded Dondozo faints")
|
||||
{
|
||||
GIVEN {
|
||||
KNOWN_FAILING;
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_DARTS) == EFFECT_DRAGON_DARTS);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_DONDOZO) { HP(1); }
|
||||
@ -474,3 +475,35 @@ DOUBLE_BATTLE_TEST("Commander will not activate if partner Dondozo is about to s
|
||||
NOT ABILITY_POPUP(playerRight, ABILITY_COMMANDER);
|
||||
}
|
||||
}
|
||||
|
||||
DOUBLE_BATTLE_TEST("Commander clears when Dondozo is replaced and Tatsugiri can be hit")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_VOLT_SWITCH) == EFFECT_HIT_ESCAPE);
|
||||
PLAYER(SPECIES_DONDOZO) { HP(1); Speed(1); }
|
||||
PLAYER(SPECIES_TATSUGIRI) { Ability(ABILITY_COMMANDER); MaxHP(400); HP(400); Speed(2); }
|
||||
PLAYER(SPECIES_SEADRA) { Speed(3); }
|
||||
OPPONENT(SPECIES_VENUSAUR) { Speed(5); }
|
||||
OPPONENT(SPECIES_LUXRAY) { Speed(6); }
|
||||
OPPONENT(SPECIES_BUTTERFREE) { Speed(4); }
|
||||
} WHEN {
|
||||
TURN {
|
||||
MOVE(opponentLeft, MOVE_SEED_BOMB, target: playerRight);
|
||||
MOVE(opponentRight, MOVE_VOLT_SWITCH, target: playerLeft);
|
||||
SEND_OUT(opponentRight, 2);
|
||||
SEND_OUT(playerLeft, 2);
|
||||
}
|
||||
TURN {
|
||||
MOVE(opponentRight, MOVE_BUG_BUZZ, target: playerRight);
|
||||
}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(playerRight, ABILITY_COMMANDER);
|
||||
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_VOLT_SWITCH, opponentRight);
|
||||
MESSAGE("Dondozo fainted!");
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SEED_BOMB, opponentLeft);
|
||||
HP_BAR(playerRight);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_BUG_BUZZ, opponentRight);
|
||||
HP_BAR(playerRight);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1742,9 +1742,10 @@ AI_DOUBLE_BATTLE_TEST("AI will not choose to switch out Dondozo with Commander T
|
||||
PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_CELEBRATE); }
|
||||
PLAYER(SPECIES_ZIGZAGOON) { Moves (MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_PERISH_SONG); }
|
||||
TURN { MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_CELEBRATE); }
|
||||
TURN { SWITCH(playerLeft, 2); SWITCH(playerRight, 3); }
|
||||
TURN { MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_CELEBRATE); EXPECT_MOVE(opponentLeft, MOVE_WATER_GUN); }
|
||||
// Commander Tatsugiri cannot act while swallowed, so skip its turn explicitly.
|
||||
TURN { MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_PERISH_SONG); SKIP_TURN(opponentRight); }
|
||||
TURN { MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_CELEBRATE); SKIP_TURN(opponentRight); }
|
||||
TURN { SWITCH(playerLeft, 2); SWITCH(playerRight, 3); SKIP_TURN(opponentRight); }
|
||||
TURN { MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_CELEBRATE); EXPECT_MOVE(opponentLeft, MOVE_WATER_GUN); SKIP_TURN(opponentRight); }
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user