diff --git a/src/battle_util.c b/src/battle_util.c index 297fe42487..a608a56335 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4038,9 +4038,16 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES) && !CanBattlerAvoidContactEffects(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker), GetBattlerHoldEffect(gBattlerAttacker), move)) { - SetPassiveDamageAmount(gBattlerAttacker, GetNonDynamaxMaxHP(gBattlerAttacker) / (B_ROUGH_SKIN_DMG >= GEN_4 ? 8 : 16)); - PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); - BattleScriptCall(BattleScript_RoughSkinActivates); + if (!IsAbilityAndRecord(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker), ABILITY_MAGIC_GUARD)) + { + PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); + SetPassiveDamageAmount(gBattlerAttacker, GetNonDynamaxMaxHP(gBattlerAttacker) / (B_ROUGH_SKIN_DMG >= GEN_4 ? 8 : 16)); + BattleScriptCall(BattleScript_RoughSkinActivates); + } + else + { + BattleScriptCall(BattleScript_AbilityPopUp); + } effect++; } break; diff --git a/test/battle/ability/magic_guard.c b/test/battle/ability/magic_guard.c index 7c080c1fa5..11e21971de 100644 --- a/test/battle/ability/magic_guard.c +++ b/test/battle/ability/magic_guard.c @@ -44,3 +44,19 @@ SINGLE_BATTLE_TEST("Magic Guard does not ignore speed stat changes caused by par ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); } } + +SINGLE_BATTLE_TEST("Magic Guard prevents Rough Skin damage") +{ + GIVEN { + ASSUME(MoveMakesContact(MOVE_POUND)); + PLAYER(SPECIES_CLEFABLE) { Ability(ABILITY_MAGIC_GUARD); } + OPPONENT(SPECIES_CARVANHA) { Ability(ABILITY_ROUGH_SKIN); } + } WHEN { + TURN { MOVE(player, MOVE_POUND); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, player); + HP_BAR(opponent); + ABILITY_POPUP(opponent, ABILITY_ROUGH_SKIN); + NOT HP_BAR(player); + } +}