diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 02fcb66f1f..626964d3ab 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7075,7 +7075,7 @@ BattleScript_AnticipationActivates:: BattleScript_AftermathDmg:: pause B_WAIT_TIME_SHORT - call BattleScript_AbilityPopUp + call BattleScript_AbilityPopUpScripting jumpifability BS_ATTACKER, ABILITY_MAGIC_GUARD, BattleScript_AftermathDmgRet orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE healthbarupdate BS_ATTACKER diff --git a/src/battle_util.c b/src/battle_util.c index 863bbcb8c7..982aa926b6 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -5867,6 +5867,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } else { + gBattleScripting.battler = gBattlerTarget; gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) gBattleStruct->moveDamage[gBattlerAttacker] = 1; @@ -5889,6 +5890,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; } + gBattleScripting.battler = gBattlerTarget; gBattleStruct->moveDamage[gBattlerAttacker] = gBattleStruct->moveDamage[gBattlerTarget]; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AftermathDmg; diff --git a/test/battle/ability/aftermath.c b/test/battle/ability/aftermath.c index 119c3bbec4..10405edad6 100644 --- a/test/battle/ability/aftermath.c +++ b/test/battle/ability/aftermath.c @@ -20,3 +20,31 @@ SINGLE_BATTLE_TEST("Aftermath damages the attacker by 1/4th of its max HP if fai EXPECT_EQ(aftermathDamage, opponent->maxHP / 4); } } + +SINGLE_BATTLE_TEST("Aftermath ability pop-up will be displayed correctly: player point of view") +{ + GIVEN { + PLAYER(SPECIES_SHROOMISH) { Ability(ABILITY_POISON_HEAL); }; + OPPONENT(SPECIES_VOLTORB) { HP(1); Ability(ABILITY_AFTERMATH); }; + } WHEN { + TURN {MOVE(player, MOVE_HEADBUTT);} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HEADBUTT, player); + MESSAGE("The opposing Voltorb fainted!"); + ABILITY_POPUP(opponent, ABILITY_AFTERMATH); + } +} + +SINGLE_BATTLE_TEST("Aftermath ability pop-up will be displayed correctly: opponent point of view") +{ + GIVEN { + PLAYER(SPECIES_VOLTORB) { HP(1); Ability(ABILITY_AFTERMATH); }; + OPPONENT(SPECIES_SHROOMISH) { Ability(ABILITY_POISON_HEAL); }; + } WHEN { + TURN {MOVE(opponent, MOVE_HEADBUTT);} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HEADBUTT, opponent); + MESSAGE("Voltorb fainted!"); + ABILITY_POPUP(player, ABILITY_AFTERMATH); + } +}