diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index dc71bc1a25..014cef63a0 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3698,8 +3698,8 @@ void SetMoveEffect(bool32 primary, bool32 certain) flags = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN; else flags = 0; - if (mirrorArmorReflected) - flags |= (STAT_CHANGE_ALLOW_PTR * !affectsUser); + if (mirrorArmorReflected && !affectsUser) + flags |= STAT_CHANGE_ALLOW_PTR; else flags |= STAT_CHANGE_UPDATE_MOVE_EFFECT; @@ -3753,9 +3753,12 @@ void SetMoveEffect(bool32 primary, bool32 certain) flags = 0; if (mirrorArmorReflected && !affectsUser) flags |= STAT_CHANGE_ALLOW_PTR; + else + flags |= STAT_CHANGE_UPDATE_MOVE_EFFECT; + if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(2) | STAT_BUFF_NEGATIVE, gBattleScripting.moveEffect - MOVE_EFFECT_ATK_MINUS_2 + 1, - flags | STAT_CHANGE_UPDATE_MOVE_EFFECT, gBattlescriptCurrInstr + 1) == STAT_CHANGE_DIDNT_WORK) + flags, gBattlescriptCurrInstr + 1) == STAT_CHANGE_DIDNT_WORK) { if (!mirrorArmorReflected) gBattlescriptCurrInstr++; diff --git a/test/battle/ability/mirror_armor.c b/test/battle/ability/mirror_armor.c index 5aa2b55ef3..0918682d76 100644 --- a/test/battle/ability/mirror_armor.c +++ b/test/battle/ability/mirror_armor.c @@ -211,3 +211,18 @@ SINGLE_BATTLE_TEST("Mirror Armor reflects Tangling Hair speed drop") ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } } + +SINGLE_BATTLE_TEST("Mirror Armor reflects Obstruct defense drop") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_CORVIKNIGHT) { Ability(ABILITY_MIRROR_ARMOR); } + } WHEN { + TURN { MOVE(player, MOVE_OBSTRUCT); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OBSTRUCT, player); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ABILITY_POPUP(opponent, ABILITY_MIRROR_ARMOR); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } +}