diff --git a/include/battle.h b/include/battle.h index 413380ccba..b38c5115db 100644 --- a/include/battle.h +++ b/include/battle.h @@ -1113,7 +1113,6 @@ extern u8 gChosenMovePos; extern u16 gCurrentMove; extern u16 gChosenMove; extern u16 gCalledMove; -extern s32 gHpDealt; extern s32 gBideDmg[MAX_BATTLERS_COUNT]; extern u16 gLastUsedItem; extern u16 gLastUsedAbility; diff --git a/src/battle_main.c b/src/battle_main.c index e2b5d1c43c..dbad37a4fd 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -163,7 +163,6 @@ EWRAM_DATA u8 gChosenMovePos = 0; EWRAM_DATA u16 gCurrentMove = 0; EWRAM_DATA u16 gChosenMove = 0; EWRAM_DATA u16 gCalledMove = 0; -EWRAM_DATA s32 gHpDealt = 0; EWRAM_DATA s32 gBideDmg[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u16 gLastUsedItem = 0; EWRAM_DATA u16 gLastUsedAbility = 0; @@ -3384,7 +3383,7 @@ const u8* FaintClearSetData(u32 battler) gBattleStruct->lastTakenMoveFrom[battler][1] = 0; gBattleStruct->lastTakenMoveFrom[battler][2] = 0; gBattleStruct->lastTakenMoveFrom[battler][3] = 0; - + if (gBattleStruct->pursuitTarget & (1u << battler)) { gBattleStruct->pursuitTarget = 0; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index dae6401cd0..0e49700e2f 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2583,13 +2583,12 @@ static void Cmd_datahpupdate(void) if (gSpecialStatuses[battler].shellBellDmg == 0) gSpecialStatuses[battler].shellBellDmg = gBattleStruct->moveDamage[battler]; gDisableStructs[battler].substituteHP -= gBattleStruct->moveDamage[battler]; - gHpDealt = gBattleStruct->moveDamage[battler]; } else { if (gSpecialStatuses[battler].shellBellDmg == 0) gSpecialStatuses[battler].shellBellDmg = gDisableStructs[battler].substituteHP; - gHpDealt = gDisableStructs[battler].substituteHP; + gBattleStruct->moveDamage[battler] = gDisableStructs[battler].substituteHP; gDisableStructs[battler].substituteHP = 0; } // check substitute fading @@ -2647,17 +2646,16 @@ static void Cmd_datahpupdate(void) if (gBattleMons[battler].hp > gBattleStruct->moveDamage[battler]) { gBattleMons[battler].hp -= gBattleStruct->moveDamage[battler]; - gHpDealt = gBattleStruct->moveDamage[battler]; } else { - gHpDealt = gBattleMons[battler].hp; + gBattleStruct->moveDamage[battler] = gBattleMons[battler].hp; gBattleMons[battler].hp = 0; } // Record damage for Shell Bell if (gSpecialStatuses[battler].shellBellDmg == 0 && !(gHitMarker & HITMARKER_PASSIVE_DAMAGE)) - gSpecialStatuses[battler].shellBellDmg = gHpDealt; + gSpecialStatuses[battler].shellBellDmg = gBattleStruct->moveDamage[battler]; u32 effect = GetMoveEffect(gCurrentMove); @@ -2666,8 +2664,8 @@ static void Cmd_datahpupdate(void) // to help determine if a fire move should defrost the target. if (IsBattleMovePhysical(gCurrentMove) && !(gHitMarker & HITMARKER_PASSIVE_DAMAGE) && effect != EFFECT_PAIN_SPLIT) { - gProtectStructs[battler].physicalDmg = gHpDealt; - gSpecialStatuses[battler].physicalDmg = gHpDealt; + gProtectStructs[battler].physicalDmg = gBattleStruct->moveDamage[battler]; + gSpecialStatuses[battler].physicalDmg = gBattleStruct->moveDamage[battler]; if (cmd->battler == BS_TARGET) { gProtectStructs[battler].physicalBattlerId = gBattlerAttacker; @@ -2682,8 +2680,8 @@ static void Cmd_datahpupdate(void) else if (!IsBattleMovePhysical(gCurrentMove) && !(gHitMarker & HITMARKER_PASSIVE_DAMAGE) && effect != EFFECT_PAIN_SPLIT) { // Record special damage/attacker for Mirror Coat - gProtectStructs[battler].specialDmg = gHpDealt; - gSpecialStatuses[battler].specialDmg = gHpDealt; + gProtectStructs[battler].specialDmg = gBattleStruct->moveDamage[battler]; + gSpecialStatuses[battler].specialDmg = gBattleStruct->moveDamage[battler]; if (cmd->battler == BS_TARGET) { gProtectStructs[battler].specialBattlerId = gBattlerAttacker; @@ -5951,7 +5949,7 @@ static void Cmd_moveend(void) switch (gBattleScripting.moveendState) { case MOVEEND_SUM_DAMAGE: // Sum and store damage dealt for multi strike recoil - gBattleScripting.savedDmg += gHpDealt; + gBattleScripting.savedDmg += gBattleStruct->moveDamage[gBattlerTarget]; gBattleScripting.moveendState++; break; case MOVEEND_PROTECT_LIKE_EFFECT: @@ -11944,7 +11942,7 @@ static void Cmd_setdrainedhp(void) { CMD_ARGS(); - gBattleStruct->moveDamage[gBattlerAttacker] = (gHpDealt * GetMoveAbsorbPercentage(gCurrentMove) / 100); + gBattleStruct->moveDamage[gBattlerAttacker] = (gBattleStruct->moveDamage[gBattlerTarget] * GetMoveAbsorbPercentage(gCurrentMove) / 100); if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) gBattleStruct->moveDamage[gBattlerAttacker] = 1;