diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 89949560d..681838f76 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -162,27 +162,26 @@ #define ATK48_DONT_CHECK_LOWER 0x8 // atk49, moveend cases -#define ATK49_FAILED_MOVE_COUNTER 0 -#define ATK49_SPIKY_SHIELD 1 -#define ATK49_RAGE 2 -#define ATK49_DEFROST 3 -#define ATK49_SYNCHRONIZE_TARGET 4 -#define ATK49_MOVE_END_ABILITIES 5 -#define ATK49_STATUS_IMMUNITY_ABILITIES 6 -#define ATK49_SYNCHRONIZE_ATTACKER 7 -#define ATK49_CHOICE_MOVE 8 -#define ATK49_CHANGED_ITEMS 9 -#define ATK49_ATTACKER_INVISIBLE 10 -#define ATK49_ATTACKER_VISIBLE 11 -#define ATK49_TARGET_VISIBLE 12 -#define ATK49_ITEM_EFFECTS_ALL 13 -#define ATK49_KINGSROCK_SHELLBELL 14 -#define ATK49_SUBSTITUTE 15 -#define ATK49_UPDATE_LAST_MOVES 16 -#define ATK49_MIRROR_MOVE 17 -#define ATK49_NEXT_TARGET 18 -#define ATK49_CLEAR_BITS 19 -#define ATK49_COUNT 20 +#define ATK49_SPIKY_SHIELD 0 +#define ATK49_RAGE 1 +#define ATK49_DEFROST 2 +#define ATK49_SYNCHRONIZE_TARGET 3 +#define ATK49_MOVE_END_ABILITIES 4 +#define ATK49_STATUS_IMMUNITY_ABILITIES 5 +#define ATK49_SYNCHRONIZE_ATTACKER 6 +#define ATK49_CHOICE_MOVE 7 +#define ATK49_CHANGED_ITEMS 8 +#define ATK49_ATTACKER_INVISIBLE 9 +#define ATK49_ATTACKER_VISIBLE 10 +#define ATK49_TARGET_VISIBLE 11 +#define ATK49_ITEM_EFFECTS_ALL 12 +#define ATK49_KINGSROCK_SHELLBELL 13 +#define ATK49_SUBSTITUTE 14 +#define ATK49_UPDATE_LAST_MOVES 15 +#define ATK49_MIRROR_MOVE 16 +#define ATK49_NEXT_TARGET 17 +#define ATK49_CLEAR_BITS 18 +#define ATK49_COUNT 19 #define BIT_HP 0x1 #define BIT_ATK 0x2 diff --git a/src/battle_main.c b/src/battle_main.c index 917cf117e..695be6470 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3044,7 +3044,7 @@ void SwitchInClearSetData(void) gBattleStruct->lastTakenMoveFrom[gActiveBattler][1] = 0; gBattleStruct->lastTakenMoveFrom[gActiveBattler][2] = 0; gBattleStruct->lastTakenMoveFrom[gActiveBattler][3] = 0; - + gBattleStruct->lastMoveFailed &= ~(gBitTable[gActiveBattler]); gBattleStruct->field_92 &= ~(gBitTable[gActiveBattler]); for (i = 0; i < gBattlersCount; i++) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 342a20a44..eac5a24bb 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -4214,13 +4214,6 @@ static void atk49_moveend(void) { switch (gBattleScripting.atk49_state) { - case ATK49_FAILED_MOVE_COUNTER: - if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - gBattleStruct->lastMoveFailed |= gBitTable[gBattlerAttacker]; - else - gBattleStruct->lastMoveFailed &= ~(gBitTable[gBattlerAttacker]); - gBattleScripting.atk49_state++; - break; case ATK49_SPIKY_SHIELD: if (gProtectStructs[gBattlerTarget].spikyShielded && gBattleMoves[gCurrentMove].flags & FLAG_MAKES_CONTACT @@ -4386,6 +4379,11 @@ static void atk49_moveend(void) break; case ATK49_UPDATE_LAST_MOVES: gDisableStructs[gBattlerAttacker].usedMoves |= gBitTable[gCurrMovePos]; + if (gMoveResultFlags & (MOVE_RESULT_FAILED | MOVE_RESULT_DOESNT_AFFECT_FOE)) + gBattleStruct->lastMoveFailed |= gBitTable[gBattlerAttacker]; + else + gBattleStruct->lastMoveFailed &= ~(gBitTable[gBattlerAttacker]); + if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET) { gActiveBattler = gBattlerAttacker;