summaryrefslogtreecommitdiff
path: root/src/battle_7.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle_7.c')
-rw-r--r--src/battle_7.c284
1 files changed, 0 insertions, 284 deletions
diff --git a/src/battle_7.c b/src/battle_7.c
deleted file mode 100644
index 8e21f9df5..000000000
--- a/src/battle_7.c
+++ /dev/null
@@ -1,284 +0,0 @@
-#include "global.h"
-#include "battle.h"
-#include "battle_controllers.h"
-#include "battle_ai_script_commands.h"
-#include "malloc.h"
-#include "rng.h"
-#include "util.h"
-#include "pokemon.h"
-#include "moves.h"
-
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gActiveBank;
-extern u16 gUnknown_020243FC;
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-
-extern const struct BattleMove gBattleMoves[];
-extern const u8 gUnknown_0831C604[];
-
-// this file's functions
-u8 sub_805D4A8(u16 move);
-u16 BattlePalaceGetTargetRetValue(void);
-void sub_805D7EC(struct Sprite *sprite);
-
-void AllocateBattleSpritesData(void)
-{
- gBattleSpritesDataPtr = AllocZeroed(sizeof(struct BattleSpriteData));
- gBattleSpritesDataPtr->bankData = AllocZeroed(sizeof(struct BattleSpriteInfo) * BATTLE_BANKS_COUNT);
- gBattleSpritesDataPtr->healthBoxesData = AllocZeroed(sizeof(struct BattleHealthboxInfo) * BATTLE_BANKS_COUNT);
- gBattleSpritesDataPtr->animationData = AllocZeroed(sizeof(struct BattleAnimationInfo));
- gBattleSpritesDataPtr->battleBars = AllocZeroed(sizeof(struct BattleBarInfo) * BATTLE_BANKS_COUNT);
-}
-
-void FreeBattleSpritesData(void)
-{
- if (gBattleSpritesDataPtr == NULL)
- return;
-
- FREE_AND_SET_NULL(gBattleSpritesDataPtr->battleBars);
- FREE_AND_SET_NULL(gBattleSpritesDataPtr->animationData);
- FREE_AND_SET_NULL(gBattleSpritesDataPtr->healthBoxesData);
- FREE_AND_SET_NULL(gBattleSpritesDataPtr->bankData);
- FREE_AND_SET_NULL(gBattleSpritesDataPtr);
-}
-
-u16 ChooseMoveAndTargetInBattlePalace(void)
-{
- s32 i, var1, var2;
- s32 chosenMoveId = -1;
- struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
- u8 unusableMovesBits = CheckMoveLimitations(gActiveBank, 0, 0xFF);
- s32 percent = Random() % 100;
-
- i = (gBattleStruct->field_92 & gBitTable[gActiveBank]) ? 2 : 0;
- var2 = i;
- var1 = i + 2;
-
- for (; i < var1; i++)
- {
- if (gUnknown_0831C494[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)][i] > percent)
- break;
- }
-
- percent = i - var2;
- if (i == var1)
- percent = 2;
-
- for (var2 = 0, i = 0; i < 4; i++)
- {
- if (moveInfo->moves[i] == MOVE_NONE)
- break;
- if (percent == sub_805D4A8(moveInfo->moves[i]) && moveInfo->currentPp[i] != 0)
- var2 |= gBitTable[i];
- }
-
- if (var2 != 0)
- {
- gBattleStruct->field_92 &= 0xF;
- gBattleStruct->field_92 |= (var2 << 4);
- BattleAI_SetupAIData(var2);
- chosenMoveId = BattleAI_ChooseMoveOrAction();
- }
-
- if (chosenMoveId == -1)
- {
- if (unusableMovesBits != 0xF)
- {
- var1 = 0, var2 = 0;
-
- for (i = 0; i < 4; i++)
- {
- if (sub_805D4A8(moveInfo->moves[i]) == 0 && !(gBitTable[i] & unusableMovesBits))
- var1 += 0x1;
- if (sub_805D4A8(moveInfo->moves[i]) == 1 && !(gBitTable[i] & unusableMovesBits))
- var1 += 0x10;
- if (sub_805D4A8(moveInfo->moves[i]) == 2 && !(gBitTable[i] & unusableMovesBits))
- var1 += 0x100;
- }
-
- if ((var1 & 0xF) > 1)
- var2++;
- if ((var1 & 0xF0) > 0x1F)
- var2++;
- if ((var1 & 0xF0) > 0x1FF)
- var2++;
-
- if (var2 > 1 || var2 == 0)
- {
- do
- {
- i = Random() % 4;
- if (!(gBitTable[i] & unusableMovesBits))
- chosenMoveId = i;
- } while (chosenMoveId == -1);
- }
- else
- {
- if ((var1 & 0xF) > 1)
- var2 = 0;
- if ((var1 & 0xF0) > 0x1F)
- var2 = 1;
- if ((var1 & 0xF0) > 0x1FF)
- var2 = 2;
-
- do
- {
- i = Random() % 4;
- if (!(gBitTable[i] & unusableMovesBits) && var2 == sub_805D4A8(moveInfo->moves[i]))
- chosenMoveId = i;
- } while (chosenMoveId == -1);
- }
-
- if (Random() % 100 > 49)
- {
- gProtectStructs[gActiveBank].flag_x10 = 1;
- return 0;
- }
- }
- else
- {
- gProtectStructs[gActiveBank].flag_x10 = 1;
- return 0;
- }
- }
-
- if (moveInfo->moves[chosenMoveId] == MOVE_CURSE)
- {
- if (moveInfo->monType1 != TYPE_GHOST && moveInfo->monType2 != TYPE_GHOST)
- var1 = MOVE_TARGET_x10;
- else
- var1 = MOVE_TARGET_SELECTED;
- }
- else
- {
- var1 = gBattleMoves[moveInfo->moves[chosenMoveId]].target;
- }
-
- if (var1 & MOVE_TARGET_x10)
- chosenMoveId |= (gActiveBank << 8);
- else if (var1 == MOVE_TARGET_SELECTED)
- chosenMoveId |= (BattlePalaceGetTargetRetValue());
- else
- chosenMoveId |= (GetBankByIdentity((GetBankIdentity(gActiveBank) & BIT_SIDE) ^ BIT_SIDE) << 8);
-
- return chosenMoveId;
-}
-
-u8 sub_805D4A8(u16 move)
-{
- switch (gBattleMoves[move].target)
- {
- case MOVE_TARGET_SELECTED:
- case MOVE_TARGET_USER:
- case MOVE_TARGET_RANDOM:
- case MOVE_TARGET_BOTH:
- case MOVE_TARGET_FOES_AND_ALLY:
- if (gBattleMoves[move].power == 0)
- return 2;
- else
- return 0;
- break;
- case MOVE_TARGET_DEPENDS:
- case MOVE_TARGET_OPPONENTS_FIELD:
- return 2;
- case MOVE_TARGET_x10:
- return 1;
- default:
- return 0;
- }
-}
-
-u16 BattlePalaceGetTargetRetValue(void)
-{
- if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- {
- u8 opposing1, opposing2;
-
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
- {
- opposing1 = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- opposing2 = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
- }
- else
- {
- opposing1 = GetBankByIdentity(IDENTITY_PLAYER_MON1);
- opposing2 = GetBankByIdentity(IDENTITY_PLAYER_MON2);
- }
-
- if (gBattleMons[opposing1].hp == gBattleMons[opposing2].hp)
- return (((gActiveBank & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8;
-
- switch (gUnknown_0831C604[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)])
- {
- case 0:
- if (gBattleMons[opposing1].hp > gBattleMons[opposing2].hp)
- return opposing1 << 8;
- else
- return opposing2 << 8;
- case 1:
- if (gBattleMons[opposing1].hp < gBattleMons[opposing2].hp)
- return opposing1 << 8;
- else
- return opposing2 << 8;
- case 2:
- return (((gActiveBank & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8;
- }
- }
-
- return (gActiveBank ^ BIT_SIDE) << 8;
-}
-
-void sub_805D714(struct Sprite *sprite)
-{
- u8 spriteId = sprite->data1;
-
- if (!gSprites[spriteId].affineAnimEnded)
- return;
- if (gSprites[spriteId].invisible)
- return;
-
- if (gSprites[spriteId].animPaused)
- {
- gSprites[spriteId].animPaused = 0;
- }
- else
- {
- if (gSprites[spriteId].animEnded)
- sprite->callback = SpriteCallbackDummy;
- }
-}
-
-void sub_805D770(struct Sprite *sprite, bool8 arg1)
-{
- sprite->animPaused = 1;
- sprite->callback = SpriteCallbackDummy;
-
- if (!arg1)
- StartSpriteAffineAnim(sprite, 1);
- else
- StartSpriteAffineAnim(sprite, 1);
-
- AnimateSprite(sprite);
-}
-
-void sub_805D7AC(struct Sprite *sprite)
-{
- if (!(gUnknown_020243FC & 1))
- {
- sprite->pos2.x += sprite->data0;
- if (sprite->pos2.x == 0)
- {
- if (sprite->pos2.y != 0)
- sprite->callback = sub_805D7EC;
- else
- sprite->callback = SpriteCallbackDummy;
- }
- }
-}
-
-void sub_805D7EC(struct Sprite *sprite)
-{
- sprite->pos2.y -= 2;
- if (sprite->pos2.y == 0)
- sprite->callback = SpriteCallbackDummy;
-}