diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 758c6e8bbf..66159bc7fb 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -3651,7 +3651,6 @@ BattleScript_EffectParalyze:: typecalc jumpifmovehadnoeffect BattleScript_ButItFailed jumpifstatus BS_TARGET, STATUS1_PARALYSIS, BattleScript_AlreadyParalyzed - jumpifelectricabilityaffected BS_TARGET, ABILITY_VOLT_ABSORB, BattleScript_VoltAbsorbHeal tryparalyzetype BS_ATTACKER, BS_TARGET, BattleScript_NotAffected jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed jumpifterrainaffected BS_TARGET, STATUS_FIELD_MISTY_TERRAIN, BattleScript_MistyTerrainPrevents diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index a74e0e5bcc..9f900d451b 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1244,6 +1244,9 @@ static void Cmd_attackcanceler(void) return; if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, gBattlerTarget, 0, 0, 0)) return; + if (gMovesInfo[gCurrentMove].effect == EFFECT_PARALYZE && AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBattlerTarget, 0, 0, gCurrentMove)) + return; + if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & (HITMARKER_ALLOW_NO_PP | HITMARKER_NO_ATTACKSTRING | HITMARKER_NO_PPDEDUCT)) && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) diff --git a/test/battle/ability/motor_drive.c b/test/battle/ability/motor_drive.c new file mode 100644 index 0000000000..83dc2a37e1 --- /dev/null +++ b/test/battle/ability/motor_drive.c @@ -0,0 +1,14 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Motor Drive absorbs status moves") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_EMOLGA) { Ability(ABILITY_MOTOR_DRIVE); } + } WHEN { + TURN { MOVE(player, MOVE_THUNDER_WAVE); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_MOTOR_DRIVE); + } +}