IsAiAiBattle function

This commit is contained in:
DizzyEggg 2023-08-09 15:57:22 +02:00
parent d0fe75b06a
commit fec8f14fff
5 changed files with 17 additions and 9 deletions

View File

@ -9,6 +9,7 @@
bool32 AI_RandLessThan(u8 val); bool32 AI_RandLessThan(u8 val);
void RecordLastUsedMoveByTarget(void); void RecordLastUsedMoveByTarget(void);
bool32 IsAiVsAiBattle(void);
bool32 BattlerHasAi(u32 battlerId); bool32 BattlerHasAi(u32 battlerId);
bool32 IsAiBattlerAware(u32 battlerId); bool32 IsAiBattlerAware(u32 battlerId);
void ClearBattlerMoveHistory(u8 battlerId); void ClearBattlerMoveHistory(u8 battlerId);

View File

@ -1001,6 +1001,9 @@ static bool8 ShouldUseItem(void)
u8 validMons = 0; u8 validMons = 0;
bool8 shouldUse = FALSE; bool8 shouldUse = FALSE;
if (IsAiVsAiBattle())
return FALSE;
// If teaming up with player and Pokemon is on the right, or Pokemon is currently held by Sky Drop // If teaming up with player and Pokemon is on the right, or Pokemon is currently held by Sky Drop
if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT) if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT)
|| gStatuses3[gActiveBattler] & STATUS3_SKY_DROPPED) || gStatuses3[gActiveBattler] & STATUS3_SKY_DROPPED)

View File

@ -441,19 +441,24 @@ void RecordLastUsedMoveByTarget(void)
RecordKnownMove(gBattlerTarget, gLastMoves[gBattlerTarget]); RecordKnownMove(gBattlerTarget, gLastMoves[gBattlerTarget]);
} }
bool32 IsAiVsAiBattle(void)
{
return (B_FLAG_AI_VS_AI_BATTLE && FlagGet(B_FLAG_AI_VS_AI_BATTLE));
}
bool32 BattlerHasAi(u32 battlerId) bool32 BattlerHasAi(u32 battlerId)
{ {
switch (GetBattlerPosition(battlerId)) switch (GetBattlerPosition(battlerId))
{ {
case B_POSITION_PLAYER_LEFT: case B_POSITION_PLAYER_LEFT:
if (FlagGet(B_FLAG_AI_VS_AI_BATTLE)) if (IsAiVsAiBattle())
return TRUE; return TRUE;
default: default:
return FALSE; return FALSE;
case B_POSITION_OPPONENT_LEFT: case B_POSITION_OPPONENT_LEFT:
return TRUE; return TRUE;
case B_POSITION_PLAYER_RIGHT: case B_POSITION_PLAYER_RIGHT:
if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) || FlagGet(B_FLAG_AI_VS_AI_BATTLE)) if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) || IsAiVsAiBattle())
return TRUE; return TRUE;
else else
return FALSE; return FALSE;

View File

@ -11,7 +11,6 @@
#include "battle_z_move.h" #include "battle_z_move.h"
#include "bg.h" #include "bg.h"
#include "data.h" #include "data.h"
#include "event_data.h"
#include "item_use.h" #include "item_use.h"
#include "link.h" #include "link.h"
#include "main.h" #include "main.h"
@ -1317,7 +1316,7 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
xPos = 90; xPos = 90;
yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80; yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80;
} }
else if (FlagGet(B_FLAG_AI_VS_AI_BATTLE)) else if (IsAiVsAiBattle())
{ {
trainerPicId = gTrainers[gPartnerTrainerId].trainerPic; trainerPicId = gTrainers[gPartnerTrainerId].trainerPic;
xPos = 60; xPos = 60;
@ -1830,7 +1829,7 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
u8 spriteId = gPartnerSpriteId; u8 spriteId = gPartnerSpriteId;
LoadCompressedPalette(gTrainerBackPicPaletteTable[spriteId].data, 0x100 + paletteNum * 16, 32); LoadCompressedPalette(gTrainerBackPicPaletteTable[spriteId].data, 0x100 + paletteNum * 16, 32);
} }
else if (FlagGet(B_FLAG_AI_VS_AI_BATTLE)) else if (IsAiVsAiBattle())
{ {
u8 spriteId = gTrainers[gPartnerTrainerId].trainerPic; u8 spriteId = gTrainers[gPartnerTrainerId].trainerPic;
LoadCompressedPalette(gTrainerFrontPicPaletteTable[spriteId].data, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); LoadCompressedPalette(gTrainerFrontPicPaletteTable[spriteId].data, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP);

View File

@ -1,12 +1,12 @@
#include "global.h" #include "global.h"
#include "battle.h" #include "battle.h"
#include "battle_ai_main.h" #include "battle_ai_main.h"
#include "battle_ai_util.h"
#include "battle_anim.h" #include "battle_anim.h"
#include "battle_controllers.h" #include "battle_controllers.h"
#include "battle_message.h" #include "battle_message.h"
#include "battle_setup.h" #include "battle_setup.h"
#include "cable_club.h" #include "cable_club.h"
#include "event_data.h"
#include "link.h" #include "link.h"
#include "link_rfu.h" #include "link_rfu.h"
#include "party_menu.h" #include "party_menu.h"
@ -171,7 +171,7 @@ static void InitSinglePlayerBtlControllers(void)
gBattlerControllerFuncs[0] = SetControllerToSafari; gBattlerControllerFuncs[0] = SetControllerToSafari;
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
gBattlerControllerFuncs[0] = SetControllerToWally; gBattlerControllerFuncs[0] = SetControllerToWally;
else if (FlagGet(B_FLAG_AI_VS_AI_BATTLE)) else if (IsAiVsAiBattle())
gBattlerControllerFuncs[0] = SetControllerToPlayerPartner; gBattlerControllerFuncs[0] = SetControllerToPlayerPartner;
else else
gBattlerControllerFuncs[0] = SetControllerToPlayer; gBattlerControllerFuncs[0] = SetControllerToPlayer;
@ -224,7 +224,7 @@ static void InitSinglePlayerBtlControllers(void)
{ {
gBattleMainFunc = BeginBattleIntro; gBattleMainFunc = BeginBattleIntro;
if (FlagGet(B_FLAG_AI_VS_AI_BATTLE)) if (IsAiVsAiBattle())
gBattlerControllerFuncs[0] = SetControllerToPlayerPartner; gBattlerControllerFuncs[0] = SetControllerToPlayerPartner;
else else
gBattlerControllerFuncs[0] = SetControllerToPlayer; gBattlerControllerFuncs[0] = SetControllerToPlayer;
@ -233,7 +233,7 @@ static void InitSinglePlayerBtlControllers(void)
gBattlerControllerFuncs[1] = SetControllerToOpponent; gBattlerControllerFuncs[1] = SetControllerToOpponent;
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT; gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
if (FlagGet(B_FLAG_AI_VS_AI_BATTLE)) if (IsAiVsAiBattle())
gBattlerControllerFuncs[2] = SetControllerToPlayerPartner; gBattlerControllerFuncs[2] = SetControllerToPlayerPartner;
else else
gBattlerControllerFuncs[2] = SetControllerToPlayer; gBattlerControllerFuncs[2] = SetControllerToPlayer;