Added MOVE_TARGET_OPPONENT and added it to Me First, (#6336)
Co-authored-by: Hedara <hedara90@gmail.com>
This commit is contained in:
parent
13acf18d74
commit
cf43787d72
@ -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)
|
||||
|
||||
@ -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())
|
||||
{
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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 },
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user