This commit is contained in:
GGbond 2026-03-21 16:01:50 +08:00
parent e3b336de2e
commit 793a2e4e42
3 changed files with 9 additions and 6 deletions

View File

@ -3388,11 +3388,14 @@ const u8* FaintClearSetData(enum BattlerId battler)
enum BattlerId 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))
if (gBattleMons[partner].volatiles.semiInvulnerable == STATE_COMMANDER)
{
BtlController_EmitSpriteInvisibility(partner, B_COMM_TO_CONTROLLER, FALSE);
MarkBattlerForControllerExec(partner);
gBattleMons[partner].volatiles.semiInvulnerable = STATE_NONE;
if (IsBattlerAlive(partner))
{
BtlController_EmitSpriteInvisibility(partner, B_COMM_TO_CONTROLLER, FALSE);
MarkBattlerForControllerExec(partner);
}
}
}

View File

@ -3751,7 +3751,7 @@ static enum MoveEndResult MoveEndClearBits(void)
{
enum BattlerId partner = BATTLE_PARTNER(i);
gBattleStruct->battlerState[i].commanderSpecies = SPECIES_NONE;
if (IsBattlerAlive(partner))
if (gBattleMons[partner].volatiles.semiInvulnerable == STATE_COMMANDER)
gBattleMons[partner].volatiles.semiInvulnerable = STATE_NONE;
}
}

View File

@ -529,8 +529,8 @@ DOUBLE_BATTLE_TEST("Commander does not clear semi-invulnerability of non-Tatsugi
MESSAGE("Tatsugiri fainted!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_FLY, playerRight);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft);
HP_BAR(playerLeft);
MESSAGE("Dondozo fainted!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight);
NOT HP_BAR(playerRight);
} THEN {
EXPECT_EQ(playerRight->hp, playerRight->maxHP);