diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 4f17840393..9a44235816 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7102,7 +7102,6 @@ BattleScript_MoveUsedIsAsleep:: goto BattleScript_MoveEnd BattleScript_MoveUsedWokeUp:: - bicword gHitMarker, HITMARKER_WAKE_UP_CLEAR printfromtable gWokeUpStringIds waitmessage B_WAIT_TIME_LONG updatestatusicon BS_ATTACKER diff --git a/include/constants/battle.h b/include/constants/battle.h index ce1cf0e948..de7bbdfe92 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -196,7 +196,7 @@ #define STATUS4_SYRUP_BOMB (1 << 5) #define STATUS4_GLAIVE_RUSH (1 << 6) -#define HITMARKER_WAKE_UP_CLEAR (1 << 4) // Cleared when waking up. Never set or checked. +#define HITMARKER_UNUSED_1 (1 << 4) #define HITMARKER_IGNORE_BIDE (1 << 5) #define HITMARKER_DESTINYBOND (1 << 6) #define HITMARKER_NO_ANIMATIONS (1 << 7) // set from battleSceneOff. Never changed during battle @@ -204,16 +204,16 @@ #define HITMARKER_NO_ATTACKSTRING (1 << 9) #define HITMARKER_ATTACKSTRING_PRINTED (1 << 10) #define HITMARKER_NO_PPDEDUCT (1 << 11) -#define HITMARKER_SWAP_ATTACKER_TARGET (1 << 12) +#define HITMARKER_UNUSED_2 (1 << 12) #define HITMARKER_STATUS_ABILITY_EFFECT (1 << 13) #define HITMARKER_SYNCHRONISE_EFFECT (1 << 14) #define HITMARKER_RUN (1 << 15) #define HITMARKER_IGNORE_DISGUISE (1 << 16) #define HITMARKER_DISABLE_ANIMATION (1 << 17) // disable animations during battle scripts, e.g. for Bug Bite -// 3 free spots because of change in handling of UNDERGROUND/UNDERWATER/ON AIR +#define HITMARKER_UNUSED_3 (1 << 18) #define HITMARKER_UNABLE_TO_USE_MOVE (1 << 19) #define HITMARKER_PASSIVE_DAMAGE (1 << 20) -#define HITMARKER_DISOBEDIENT_MOVE (1 << 21) +#define HITMARKER_UNUSED_4 (1 << 21) #define HITMARKER_PLAYER_FAINTED (1 << 22) #define HITMARKER_ALLOW_NO_PP (1 << 23) #define HITMARKER_GRUDGE (1 << 24) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 0c45e291ed..069ffb1737 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -6842,12 +6842,13 @@ static void Cmd_moveend(void) } } - if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET) + // After swapattackerwithtarget is used for snatch the correct battlers have to be restored so data is stored correctly + if (gBattleStruct->snatchedMoveIsUsed) { - u8 temp; + u32 temp; SWAP(gBattlerAttacker, gBattlerTarget, temp); - gHitMarker &= ~HITMARKER_SWAP_ATTACKER_TARGET; } + if (!gSpecialStatuses[gBattlerAttacker].dancerUsedMove) { gDisableStructs[gBattlerAttacker].usedMoves |= 1u << gCurrMovePos; @@ -8827,14 +8828,8 @@ static void Cmd_swapattackerwithtarget(void) { CMD_ARGS(); - u8 temp; + u32 temp; SWAP(gBattlerAttacker, gBattlerTarget, temp); - - if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET) - gHitMarker &= ~HITMARKER_SWAP_ATTACKER_TARGET; - else - gHitMarker |= HITMARKER_SWAP_ATTACKER_TARGET; - gBattlescriptCurrInstr = cmd->nextInstr; } diff --git a/src/battle_util.c b/src/battle_util.c index 359c88e2b4..05f5b83602 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -787,7 +787,7 @@ void HandleAction_NothingIsFainted(void) gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_STATUS_ABILITY_EFFECT | HITMARKER_PASSIVE_DAMAGE - | HITMARKER_OBEYS | HITMARKER_WAKE_UP_CLEAR | HITMARKER_SYNCHRONISE_EFFECT + | HITMARKER_OBEYS | HITMARKER_SYNCHRONISE_EFFECT | HITMARKER_CHARGING | HITMARKER_NEVER_SET); } @@ -801,7 +801,7 @@ void HandleAction_ActionFinished(void) SpecialStatusesClear(); gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_STATUS_ABILITY_EFFECT | HITMARKER_PASSIVE_DAMAGE - | HITMARKER_OBEYS | HITMARKER_WAKE_UP_CLEAR | HITMARKER_SYNCHRONISE_EFFECT + | HITMARKER_OBEYS | HITMARKER_SYNCHRONISE_EFFECT | HITMARKER_CHARGING | HITMARKER_NEVER_SET | HITMARKER_IGNORE_DISGUISE); // check if Stellar type boost should be used up @@ -3309,7 +3309,6 @@ static void CancellerObedience(u32 *effect) SetAtkCancellerForCalledMove(); gBattlescriptCurrInstr = BattleScript_IgnoresAndUsesRandomMove; gBattlerTarget = GetBattleMoveTarget(gCalledMove, NO_TARGET_OVERRIDE); - gHitMarker |= HITMARKER_DISOBEDIENT_MOVE; gHitMarker |= HITMARKER_OBEYS; break; }