Fixes Throat Chop timer being reset with every use of the move (#9246)
Some checks are pending
CI / build (push) Waiting to run
CI / docs_validate (push) Waiting to run
CI / allcontributors (push) Waiting to run
Docs / deploy (push) Waiting to run

This commit is contained in:
PhallenTree 2026-02-18 14:40:30 +00:00 committed by GitHub
parent 33b89f227d
commit 3494d6b064
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 3 deletions

View File

@ -3514,8 +3514,11 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c
}
break;
case MOVE_EFFECT_THROAT_CHOP:
gDisableStructs[gEffectBattler].throatChopTimer = 2;
gBattlescriptCurrInstr = battleScript;
if (gDisableStructs[gEffectBattler].throatChopTimer == 0)
{
gDisableStructs[gEffectBattler].throatChopTimer = 2;
gBattlescriptCurrInstr = battleScript;
}
break;
case MOVE_EFFECT_INCINERATE:
if (((gBattleMons[gEffectBattler].item >= FIRST_BERRY_INDEX && gBattleMons[gEffectBattler].item <= LAST_BERRY_INDEX)

View File

@ -27,8 +27,9 @@ SINGLE_BATTLE_TEST("Throat Chop prevents the usage of sound moves")
SINGLE_BATTLE_TEST("Throat Chop prevents sound base moves for 2 turns")
{
GIVEN {
ASSUME(IsSoundMove(MOVE_HYPER_VOICE));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HYPER_VOICE, MOVE_ALLURING_VOICE, MOVE_OVERDRIVE, MOVE_ROUND); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HYPER_VOICE); }
} WHEN {
TURN { MOVE(opponent, MOVE_HYPER_VOICE); MOVE(player, MOVE_THROAT_CHOP); }
TURN { FORCED_MOVE(opponent); }
@ -45,3 +46,22 @@ SINGLE_BATTLE_TEST("Throat Chop prevents sound base moves for 2 turns")
ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, opponent);
}
}
SINGLE_BATTLE_TEST("Throat Chop usage when target is already prevented from using sound moves doesn't reset timer")
{
GIVEN {
ASSUME(IsSoundMove(MOVE_HYPER_VOICE));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HYPER_VOICE); }
} WHEN {
TURN { MOVE(opponent, MOVE_HYPER_VOICE); MOVE(player, MOVE_THROAT_CHOP); }
TURN { FORCED_MOVE(opponent); MOVE(player, MOVE_THROAT_CHOP); }
TURN { MOVE(opponent, MOVE_HYPER_VOICE); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, opponent);
ANIMATION(ANIM_TYPE_MOVE, MOVE_THROAT_CHOP, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, opponent);
ANIMATION(ANIM_TYPE_MOVE, MOVE_THROAT_CHOP, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, opponent);
}
}