diff --git a/include/constants/battle.h b/include/constants/battle.h index 37cdf440d4..93c61bdd59 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -510,7 +510,7 @@ #define MOVE_TARGET_SELECTED 0 #define MOVE_TARGET_DEPENDS (1 << 0) -#define MOVE_TARGET_USER_OR_SELECTED (1 << 1) +#define MOVE_TARGET_OPPONENT (1 << 1) #define MOVE_TARGET_RANDOM (1 << 2) #define MOVE_TARGET_BOTH (1 << 3) #define MOVE_TARGET_USER (1 << 4) diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 2fbf8cf69f..e0507bfaf1 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -565,7 +565,7 @@ static void OpponentHandleChooseMove(u32 battler) default: { u16 chosenMove = moveInfo->moves[chosenMoveId]; - if (GetBattlerMoveTargetType(battler, chosenMove) & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER)) + if (GetBattlerMoveTargetType(battler, chosenMove) & MOVE_TARGET_USER) gBattlerTarget = battler; if (GetBattlerMoveTargetType(battler, chosenMove) & MOVE_TARGET_BOTH) { @@ -600,7 +600,7 @@ static void OpponentHandleChooseMove(u32 battler) move = moveInfo->moves[chosenMoveId]; } while (move == MOVE_NONE); - if (GetBattlerMoveTargetType(battler, move) & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER)) + if (GetBattlerMoveTargetType(battler, move) & MOVE_TARGET_USER) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (battler << 8)); else if (IsDoubleBattle()) { diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 77ce6083f9..4bf2388fc6 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -499,8 +499,6 @@ void HandleInputChooseTarget(u32 battler) case B_POSITION_PLAYER_RIGHT: if (battler != gMultiUsePlayerCursor) i++; - else if (moveTarget & MOVE_TARGET_USER_OR_SELECTED) - i++; break; case B_POSITION_OPPONENT_LEFT: case B_POSITION_OPPONENT_RIGHT: @@ -509,7 +507,8 @@ void HandleInputChooseTarget(u32 battler) } if (gAbsentBattlerFlags & (1u << gMultiUsePlayerCursor) - || !CanTargetBattler(battler, gMultiUsePlayerCursor, move)) + || !CanTargetBattler(battler, gMultiUsePlayerCursor, move) + || (moveTarget & MOVE_TARGET_OPPONENT && GetBattlerSide(gMultiUsePlayerCursor) == B_SIDE_PLAYER)) i = 0; } while (i == 0); } @@ -549,8 +548,6 @@ void HandleInputChooseTarget(u32 battler) case B_POSITION_PLAYER_RIGHT: if (battler != gMultiUsePlayerCursor) i++; - else if (moveTarget & MOVE_TARGET_USER_OR_SELECTED) - i++; break; case B_POSITION_OPPONENT_LEFT: case B_POSITION_OPPONENT_RIGHT: @@ -559,7 +556,8 @@ void HandleInputChooseTarget(u32 battler) } if (gAbsentBattlerFlags & (1u << gMultiUsePlayerCursor) - || !CanTargetBattler(battler, gMultiUsePlayerCursor, move)) + || !CanTargetBattler(battler, gMultiUsePlayerCursor, move) + || (moveTarget & MOVE_TARGET_OPPONENT && GetBattlerSide(gMultiUsePlayerCursor) == B_SIDE_PLAYER)) i = 0; } while (i == 0); } @@ -694,12 +692,7 @@ void HandleInputChooseMove(u32 battler) else gMultiUsePlayerCursor = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerSide(battler))); - if (!gBattleResources->bufferA[battler][1]) // not a double battle - { - if (moveTarget & MOVE_TARGET_USER_OR_SELECTED && !gBattleResources->bufferA[battler][2]) - canSelectTarget = 1; - } - else // double battle + if (gBattleResources->bufferA[battler][1]) // a double battle { if (!(moveTarget & (MOVE_TARGET_RANDOM | MOVE_TARGET_BOTH | MOVE_TARGET_DEPENDS | MOVE_TARGET_FOES_AND_ALLY | MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_USER | MOVE_TARGET_ALLY))) canSelectTarget = 1; // either selected or user @@ -710,7 +703,7 @@ void HandleInputChooseMove(u32 battler) { canSelectTarget = 0; } - else if (!(moveTarget & (MOVE_TARGET_USER | MOVE_TARGET_USER_OR_SELECTED)) && CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_BATTLER, battler) <= 1) + else if (!(moveTarget & MOVE_TARGET_USER) && CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_BATTLER, battler) <= 1) { gMultiUsePlayerCursor = GetDefaultMoveTarget(battler); canSelectTarget = 0; @@ -753,7 +746,7 @@ void HandleInputChooseMove(u32 battler) case 1: gBattlerControllerFuncs[battler] = HandleInputChooseTarget; - if (moveTarget & (MOVE_TARGET_USER | MOVE_TARGET_USER_OR_SELECTED)) + if (moveTarget & MOVE_TARGET_USER) gMultiUsePlayerCursor = battler; else if (gAbsentBattlerFlags & (1u << GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))) gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index f987c333ce..8bc27751b4 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -354,7 +354,7 @@ static void PlayerPartnerHandleChooseMove(u32 battler) chosenMoveId = gBattleStruct->aiMoveOrAction[battler]; gBattlerTarget = gBattleStruct->aiChosenTarget[battler]; - if (gMovesInfo[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_USER | MOVE_TARGET_USER_OR_SELECTED)) + if (gMovesInfo[moveInfo->moves[chosenMoveId]].target & MOVE_TARGET_USER) gBattlerTarget = battler; else if (gMovesInfo[moveInfo->moves[chosenMoveId]].target & MOVE_TARGET_BOTH) { diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index bbe7924c46..262ccecc68 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -325,7 +325,7 @@ static u8 GetBattlePalaceMoveGroup(u8 battler, u16 move) switch (GetBattlerMoveTargetType(battler, move)) { case MOVE_TARGET_SELECTED: - case MOVE_TARGET_USER_OR_SELECTED: + case MOVE_TARGET_OPPONENT: case MOVE_TARGET_RANDOM: case MOVE_TARGET_BOTH: case MOVE_TARGET_FOES_AND_ALLY: diff --git a/src/battle_util.c b/src/battle_util.c index 28da294042..dd53e73d47 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8430,6 +8430,7 @@ u32 GetMoveTarget(u16 move, u8 setTarget) switch (moveTarget) { case MOVE_TARGET_SELECTED: + case MOVE_TARGET_OPPONENT: side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); if (IsAffectedByFollowMe(gBattlerAttacker, side, move)) { @@ -8489,7 +8490,6 @@ u32 GetMoveTarget(u16 move, u8 setTarget) else targetBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker))); break; - case MOVE_TARGET_USER_OR_SELECTED: case MOVE_TARGET_USER: default: targetBattler = gBattlerAttacker; @@ -8850,7 +8850,7 @@ u32 GetMoveTargetCount(struct DamageCalculationData *damageCalcData) case MOVE_TARGET_DEPENDS: case MOVE_TARGET_SELECTED: case MOVE_TARGET_RANDOM: - case MOVE_TARGET_USER_OR_SELECTED: + case MOVE_TARGET_OPPONENT: return IsBattlerAlive(battlerDef); case MOVE_TARGET_USER: return IsBattlerAlive(battlerAtk); diff --git a/src/contest.c b/src/contest.c index 71383b6483..8b217356d2 100644 --- a/src/contest.c +++ b/src/contest.c @@ -5487,10 +5487,10 @@ static void SetMoveTargetPosition(u16 move) { switch (GetBattlerMoveTargetType(gBattlerAttacker, move)) { - case MOVE_TARGET_USER_OR_SELECTED: case MOVE_TARGET_USER: gBattlerTarget = B_POSITION_PLAYER_RIGHT; break; + case MOVE_TARGET_OPPONENT: case MOVE_TARGET_SELECTED: case MOVE_TARGET_RANDOM: case MOVE_TARGET_BOTH: diff --git a/src/data/moves_info.h b/src/data/moves_info.h index f826a05fb4..2bf3fd4be2 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -9600,7 +9600,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .type = TYPE_NORMAL, .accuracy = 0, .pp = 20, - .target = MOVE_TARGET_SELECTED, + .target = MOVE_TARGET_OPPONENT, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_SPD_UP_2 }, diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index 5340ddb4c9..d50668ca30 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -2043,7 +2043,7 @@ s32 MoveGetTarget(s32 battlerId, u32 moveId, struct MoveContext *ctx, u32 source { target = BATTLE_OPPOSITE(battlerId); } - else if (move->target == MOVE_TARGET_SELECTED) + else if (move->target == MOVE_TARGET_SELECTED || move->target == MOVE_TARGET_OPPONENT) { // In AI Doubles not specified target allows any target for EXPECT_MOVE. if (GetBattleTest()->type != BATTLE_TEST_AI_DOUBLES)