mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
handle move anim
This commit is contained in:
parent
e8d6c99e6d
commit
546b0c7e97
@ -272,6 +272,7 @@ void BtlController_HandleTrainerSlideBack(u32 battlerId, s16 data0, bool32 start
|
|||||||
void BtlController_HandleFaintAnimation(void);
|
void BtlController_HandleFaintAnimation(void);
|
||||||
void BtlController_HandleSuccessBallThrowAnim(u32 battler, u32 target, u32 animId, bool32 allowCriticalCapture);
|
void BtlController_HandleSuccessBallThrowAnim(u32 battler, u32 target, u32 animId, bool32 allowCriticalCapture);
|
||||||
void BtlController_HandleBallThrowAnim(u32 battler, u32 target, u32 animId, bool32 allowCriticalCapture);
|
void BtlController_HandleBallThrowAnim(u32 battler, u32 target, u32 animId, bool32 allowCriticalCapture);
|
||||||
|
void BtlController_HandleMoveAnimation(u32 battler, bool32 updateTvData);
|
||||||
void BtlController_HandlePrintString(u32 battler, bool32 updateTvData, bool32 arenaPtsDeduct);
|
void BtlController_HandlePrintString(u32 battler, bool32 updateTvData, bool32 arenaPtsDeduct);
|
||||||
void DoStatusIconUpdate(u32 battler);
|
void DoStatusIconUpdate(u32 battler);
|
||||||
void BtlController_HandleStatusIconUpdate(void);
|
void BtlController_HandleStatusIconUpdate(void);
|
||||||
|
@ -46,9 +46,6 @@ static void LinkOpponentHandleEndLinkBattle(void);
|
|||||||
static void LinkOpponentBufferRunCommand(void);
|
static void LinkOpponentBufferRunCommand(void);
|
||||||
static void LinkOpponentBufferExecCompleted(void);
|
static void LinkOpponentBufferExecCompleted(void);
|
||||||
static void SwitchIn_HandleSoundAndEnd(void);
|
static void SwitchIn_HandleSoundAndEnd(void);
|
||||||
static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst);
|
|
||||||
static void SetLinkOpponentMonData(u8 monId);
|
|
||||||
static void LinkOpponentDoMoveAnimation(void);
|
|
||||||
|
|
||||||
static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||||
{
|
{
|
||||||
@ -501,71 +498,7 @@ static void LinkOpponentHandleTrainerSlideBack(void)
|
|||||||
|
|
||||||
static void LinkOpponentHandleMoveAnimation(void)
|
static void LinkOpponentHandleMoveAnimation(void)
|
||||||
{
|
{
|
||||||
if (!IsBattleSEPlaying(gActiveBattler))
|
BtlController_HandleMoveAnimation(gActiveBattler, TRUE);
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
|
|
||||||
gAnimMoveTurn = gBattleResources->bufferA[gActiveBattler][3];
|
|
||||||
gAnimMovePower = gBattleResources->bufferA[gActiveBattler][4] | (gBattleResources->bufferA[gActiveBattler][5] << 8);
|
|
||||||
gAnimMoveDmg = gBattleResources->bufferA[gActiveBattler][6] | (gBattleResources->bufferA[gActiveBattler][7] << 8) | (gBattleResources->bufferA[gActiveBattler][8] << 16) | (gBattleResources->bufferA[gActiveBattler][9] << 24);
|
|
||||||
gAnimFriendship = gBattleResources->bufferA[gActiveBattler][10];
|
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
|
||||||
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = LinkOpponentDoMoveAnimation;
|
|
||||||
BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void LinkOpponentDoMoveAnimation(void)
|
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
u8 multihit = gBattleResources->bufferA[gActiveBattler][11];
|
|
||||||
|
|
||||||
switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
|
||||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
|
||||||
{
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
|
||||||
DoMoveAnim(move);
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
gAnimScriptCallback();
|
|
||||||
if (!gAnimScriptActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
|
||||||
{
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
CopyAllBattleSpritesInvisibilities();
|
|
||||||
TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8));
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
LinkOpponentBufferExecCompleted();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkOpponentHandlePrintString(void)
|
static void LinkOpponentHandlePrintString(void)
|
||||||
|
@ -45,10 +45,6 @@ static void LinkPartnerHandleEndLinkBattle(void);
|
|||||||
static void LinkPartnerBufferRunCommand(void);
|
static void LinkPartnerBufferRunCommand(void);
|
||||||
static void LinkPartnerBufferExecCompleted(void);
|
static void LinkPartnerBufferExecCompleted(void);
|
||||||
static void SwitchIn_WaitAndEnd(void);
|
static void SwitchIn_WaitAndEnd(void);
|
||||||
static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst);
|
|
||||||
static void SetLinkPartnerMonData(u8 monId);
|
|
||||||
static void LinkPartnerDoMoveAnimation(void);
|
|
||||||
static void Task_StartSendOutAnim(u8 taskId);
|
|
||||||
|
|
||||||
static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||||
{
|
{
|
||||||
@ -266,71 +262,7 @@ static void LinkPartnerHandleTrainerSlideBack(void)
|
|||||||
|
|
||||||
static void LinkPartnerHandleMoveAnimation(void)
|
static void LinkPartnerHandleMoveAnimation(void)
|
||||||
{
|
{
|
||||||
if (!IsBattleSEPlaying(gActiveBattler))
|
BtlController_HandleMoveAnimation(gActiveBattler, TRUE);
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
|
|
||||||
gAnimMoveTurn = gBattleResources->bufferA[gActiveBattler][3];
|
|
||||||
gAnimMovePower = gBattleResources->bufferA[gActiveBattler][4] | (gBattleResources->bufferA[gActiveBattler][5] << 8);
|
|
||||||
gAnimMoveDmg = gBattleResources->bufferA[gActiveBattler][6] | (gBattleResources->bufferA[gActiveBattler][7] << 8) | (gBattleResources->bufferA[gActiveBattler][8] << 16) | (gBattleResources->bufferA[gActiveBattler][9] << 24);
|
|
||||||
gAnimFriendship = gBattleResources->bufferA[gActiveBattler][10];
|
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
|
||||||
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = LinkPartnerDoMoveAnimation;
|
|
||||||
BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void LinkPartnerDoMoveAnimation(void)
|
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
u8 multihit = gBattleResources->bufferA[gActiveBattler][11];
|
|
||||||
|
|
||||||
switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
|
||||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
|
||||||
{
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
|
||||||
DoMoveAnim(move);
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
gAnimScriptCallback();
|
|
||||||
if (!gAnimScriptActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
|
||||||
{
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
CopyAllBattleSpritesInvisibilities();
|
|
||||||
TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8));
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
LinkPartnerBufferExecCompleted();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LinkPartnerHandlePrintString(void)
|
static void LinkPartnerHandlePrintString(void)
|
||||||
|
@ -60,11 +60,6 @@ static u8 CountAIAliveNonEggMonsExcept(u8 slotToIgnore);
|
|||||||
static void OpponentBufferRunCommand(void);
|
static void OpponentBufferRunCommand(void);
|
||||||
static void OpponentBufferExecCompleted(void);
|
static void OpponentBufferExecCompleted(void);
|
||||||
static void SwitchIn_HandleSoundAndEnd(void);
|
static void SwitchIn_HandleSoundAndEnd(void);
|
||||||
static u32 GetOpponentMonData(u8 monId, u8 *dst);
|
|
||||||
static void SetOpponentMonData(u8 monId);
|
|
||||||
static void OpponentDoMoveAnimation(void);
|
|
||||||
static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite);
|
|
||||||
static void Task_StartSendOutAnim(u8 taskId);
|
|
||||||
|
|
||||||
static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||||
{
|
{
|
||||||
@ -516,70 +511,7 @@ static void OpponentHandleTrainerSlideBack(void)
|
|||||||
|
|
||||||
static void OpponentHandleMoveAnimation(void)
|
static void OpponentHandleMoveAnimation(void)
|
||||||
{
|
{
|
||||||
if (!IsBattleSEPlaying(gActiveBattler))
|
BtlController_HandleMoveAnimation(gActiveBattler, FALSE);
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
|
|
||||||
gAnimMoveTurn = gBattleResources->bufferA[gActiveBattler][3];
|
|
||||||
gAnimMovePower = gBattleResources->bufferA[gActiveBattler][4] | (gBattleResources->bufferA[gActiveBattler][5] << 8);
|
|
||||||
gAnimMoveDmg = gBattleResources->bufferA[gActiveBattler][6] | (gBattleResources->bufferA[gActiveBattler][7] << 8) | (gBattleResources->bufferA[gActiveBattler][8] << 16) | (gBattleResources->bufferA[gActiveBattler][9] << 24);
|
|
||||||
gAnimFriendship = gBattleResources->bufferA[gActiveBattler][10];
|
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
|
||||||
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = OpponentDoMoveAnimation;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void OpponentDoMoveAnimation(void)
|
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
u8 multihit = gBattleResources->bufferA[gActiveBattler][11];
|
|
||||||
|
|
||||||
switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
|
||||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
|
||||||
{
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
|
||||||
DoMoveAnim(move);
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
gAnimScriptCallback();
|
|
||||||
if (!gAnimScriptActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
|
||||||
{
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
CopyAllBattleSpritesInvisibilities();
|
|
||||||
TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8));
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
OpponentBufferExecCompleted();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void OpponentHandlePrintString(void)
|
static void OpponentHandlePrintString(void)
|
||||||
|
@ -1712,6 +1712,7 @@ static void PlayerHandleDrawTrainerPic(void)
|
|||||||
s16 xPos, yPos;
|
s16 xPos, yPos;
|
||||||
u32 trainerPicId, gender;
|
u32 trainerPicId, gender;
|
||||||
|
|
||||||
|
trainerPicId = PlayerGetTrainerBackPicId();
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||||
{
|
{
|
||||||
if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != B_FLANK_LEFT) // Second mon, on the right.
|
if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != B_FLANK_LEFT) // Second mon, on the right.
|
||||||
@ -1744,7 +1745,6 @@ static void PlayerHandleDrawTrainerPic(void)
|
|||||||
}
|
}
|
||||||
else // Use back pic in all the other usual circumstances.
|
else // Use back pic in all the other usual circumstances.
|
||||||
{
|
{
|
||||||
trainerPicId = PlayerGetTrainerBackPicId();
|
|
||||||
isFrontPic = FALSE;
|
isFrontPic = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1790,71 +1790,7 @@ static void PlayerHandlePause(void)
|
|||||||
|
|
||||||
static void PlayerHandleMoveAnimation(void)
|
static void PlayerHandleMoveAnimation(void)
|
||||||
{
|
{
|
||||||
if (!IsBattleSEPlaying(gActiveBattler))
|
BtlController_HandleMoveAnimation(gActiveBattler, TRUE);
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
|
|
||||||
gAnimMoveTurn = gBattleResources->bufferA[gActiveBattler][3];
|
|
||||||
gAnimMovePower = gBattleResources->bufferA[gActiveBattler][4] | (gBattleResources->bufferA[gActiveBattler][5] << 8);
|
|
||||||
gAnimMoveDmg = gBattleResources->bufferA[gActiveBattler][6] | (gBattleResources->bufferA[gActiveBattler][7] << 8) | (gBattleResources->bufferA[gActiveBattler][8] << 16) | (gBattleResources->bufferA[gActiveBattler][9] << 24);
|
|
||||||
gAnimFriendship = gBattleResources->bufferA[gActiveBattler][10];
|
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
|
||||||
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = PlayerDoMoveAnimation;
|
|
||||||
BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void PlayerDoMoveAnimation(void)
|
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
u8 multihit = gBattleResources->bufferA[gActiveBattler][11];
|
|
||||||
|
|
||||||
switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
|
||||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
|
||||||
{
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
|
||||||
DoMoveAnim(move);
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
gAnimScriptCallback();
|
|
||||||
if (!gAnimScriptActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
|
||||||
{
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
CopyAllBattleSpritesInvisibilities();
|
|
||||||
TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8));
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
PlayerBufferExecCompleted();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PlayerHandlePrintString(void)
|
static void PlayerHandlePrintString(void)
|
||||||
|
@ -54,10 +54,6 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId);
|
|||||||
static void Task_GiveExpWithExpBar(u8 taskId);
|
static void Task_GiveExpWithExpBar(u8 taskId);
|
||||||
static void Task_UpdateLvlInHealthbox(u8 taskId);
|
static void Task_UpdateLvlInHealthbox(u8 taskId);
|
||||||
static void SwitchIn_WaitAndEnd(void);
|
static void SwitchIn_WaitAndEnd(void);
|
||||||
static u32 CopyPlayerPartnerMonData(u8 monId, u8 *dst);
|
|
||||||
static void SetPlayerPartnerMonData(u8 monId);
|
|
||||||
static void PlayerPartnerDoMoveAnimation(void);
|
|
||||||
static void Task_StartSendOutAnim(u8 taskId);
|
|
||||||
|
|
||||||
static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||||
{
|
{
|
||||||
@ -356,70 +352,7 @@ static void PlayerPartnerHandleTrainerSlideBack(void)
|
|||||||
|
|
||||||
static void PlayerPartnerHandleMoveAnimation(void)
|
static void PlayerPartnerHandleMoveAnimation(void)
|
||||||
{
|
{
|
||||||
if (!IsBattleSEPlaying(gActiveBattler))
|
BtlController_HandleMoveAnimation(gActiveBattler, FALSE);
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
|
|
||||||
gAnimMoveTurn = gBattleResources->bufferA[gActiveBattler][3];
|
|
||||||
gAnimMovePower = gBattleResources->bufferA[gActiveBattler][4] | (gBattleResources->bufferA[gActiveBattler][5] << 8);
|
|
||||||
gAnimMoveDmg = gBattleResources->bufferA[gActiveBattler][6] | (gBattleResources->bufferA[gActiveBattler][7] << 8) | (gBattleResources->bufferA[gActiveBattler][8] << 16) | (gBattleResources->bufferA[gActiveBattler][9] << 24);
|
|
||||||
gAnimFriendship = gBattleResources->bufferA[gActiveBattler][10];
|
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
|
||||||
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = PlayerPartnerDoMoveAnimation;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void PlayerPartnerDoMoveAnimation(void)
|
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
u8 multihit = gBattleResources->bufferA[gActiveBattler][11];
|
|
||||||
|
|
||||||
switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
|
||||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
|
||||||
{
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
|
||||||
DoMoveAnim(move);
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
gAnimScriptCallback();
|
|
||||||
if (!gAnimScriptActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
|
||||||
{
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
CopyAllBattleSpritesInvisibilities();
|
|
||||||
TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8));
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
PlayerPartnerBufferExecCompleted();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PlayerPartnerHandlePrintString(void)
|
static void PlayerPartnerHandlePrintString(void)
|
||||||
|
@ -53,10 +53,6 @@ static void RecordedOpponentHandleEndLinkBattle(void);
|
|||||||
static void RecordedOpponentBufferRunCommand(void);
|
static void RecordedOpponentBufferRunCommand(void);
|
||||||
static void RecordedOpponentBufferExecCompleted(void);
|
static void RecordedOpponentBufferExecCompleted(void);
|
||||||
static void SwitchIn_HandleSoundAndEnd(void);
|
static void SwitchIn_HandleSoundAndEnd(void);
|
||||||
static u32 CopyRecordedOpponentMonData(u8 monId, u8 *dst);
|
|
||||||
static void SetRecordedOpponentMonData(u8 monId);
|
|
||||||
static void RecordedOpponentDoMoveAnimation(void);
|
|
||||||
static void EndDrawPartyStatusSummary(void);
|
|
||||||
|
|
||||||
static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||||
{
|
{
|
||||||
@ -454,70 +450,7 @@ static void RecordedOpponentHandleTrainerSlideBack(void)
|
|||||||
|
|
||||||
static void RecordedOpponentHandleMoveAnimation(void)
|
static void RecordedOpponentHandleMoveAnimation(void)
|
||||||
{
|
{
|
||||||
if (!IsBattleSEPlaying(gActiveBattler))
|
BtlController_HandleMoveAnimation(gActiveBattler, FALSE);
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
|
|
||||||
gAnimMoveTurn = gBattleResources->bufferA[gActiveBattler][3];
|
|
||||||
gAnimMovePower = gBattleResources->bufferA[gActiveBattler][4] | (gBattleResources->bufferA[gActiveBattler][5] << 8);
|
|
||||||
gAnimMoveDmg = gBattleResources->bufferA[gActiveBattler][6] | (gBattleResources->bufferA[gActiveBattler][7] << 8) | (gBattleResources->bufferA[gActiveBattler][8] << 16) | (gBattleResources->bufferA[gActiveBattler][9] << 24);
|
|
||||||
gAnimFriendship = gBattleResources->bufferA[gActiveBattler][10];
|
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
|
||||||
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = RecordedOpponentDoMoveAnimation;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void RecordedOpponentDoMoveAnimation(void)
|
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
u8 multihit = gBattleResources->bufferA[gActiveBattler][11];
|
|
||||||
|
|
||||||
switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
|
||||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
|
||||||
{
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
|
||||||
DoMoveAnim(move);
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
gAnimScriptCallback();
|
|
||||||
if (!gAnimScriptActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
|
||||||
{
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
CopyAllBattleSpritesInvisibilities();
|
|
||||||
TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8));
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
RecordedOpponentBufferExecCompleted();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void RecordedOpponentHandlePrintString(void)
|
static void RecordedOpponentHandlePrintString(void)
|
||||||
|
@ -50,10 +50,6 @@ static void RecordedPlayerHandleEndLinkBattle(void);
|
|||||||
static void RecordedPlayerBufferRunCommand(void);
|
static void RecordedPlayerBufferRunCommand(void);
|
||||||
static void RecordedPlayerBufferExecCompleted(void);
|
static void RecordedPlayerBufferExecCompleted(void);
|
||||||
static void SwitchIn_WaitAndEnd(void);
|
static void SwitchIn_WaitAndEnd(void);
|
||||||
static u32 CopyRecordedPlayerMonData(u8 monId, u8 *dst);
|
|
||||||
static void SetRecordedPlayerMonData(u8 monId);
|
|
||||||
static void RecordedPlayerDoMoveAnimation(void);
|
|
||||||
static void Task_StartSendOutAnim(u8 taskId);
|
|
||||||
|
|
||||||
static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||||
{
|
{
|
||||||
@ -443,70 +439,7 @@ static void RecordedPlayerHandleTrainerSlideBack(void)
|
|||||||
|
|
||||||
static void RecordedPlayerHandleMoveAnimation(void)
|
static void RecordedPlayerHandleMoveAnimation(void)
|
||||||
{
|
{
|
||||||
if (!IsBattleSEPlaying(gActiveBattler))
|
BtlController_HandleMoveAnimation(gActiveBattler, FALSE);
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
|
|
||||||
gAnimMoveTurn = gBattleResources->bufferA[gActiveBattler][3];
|
|
||||||
gAnimMovePower = gBattleResources->bufferA[gActiveBattler][4] | (gBattleResources->bufferA[gActiveBattler][5] << 8);
|
|
||||||
gAnimMoveDmg = gBattleResources->bufferA[gActiveBattler][6] | (gBattleResources->bufferA[gActiveBattler][7] << 8) | (gBattleResources->bufferA[gActiveBattler][8] << 16) | (gBattleResources->bufferA[gActiveBattler][9] << 24);
|
|
||||||
gAnimFriendship = gBattleResources->bufferA[gActiveBattler][10];
|
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
|
||||||
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = RecordedPlayerDoMoveAnimation;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void RecordedPlayerDoMoveAnimation(void)
|
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
u8 multihit = gBattleResources->bufferA[gActiveBattler][11];
|
|
||||||
|
|
||||||
switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
|
||||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
|
||||||
{
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
|
||||||
DoMoveAnim(move);
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
gAnimScriptCallback();
|
|
||||||
if (!gAnimScriptActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
|
||||||
{
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
|
||||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
CopyAllBattleSpritesInvisibilities();
|
|
||||||
TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8));
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
RecordedPlayerBufferExecCompleted();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void RecordedPlayerHandlePrintString(void)
|
static void RecordedPlayerHandlePrintString(void)
|
||||||
|
@ -54,9 +54,6 @@ static void WallyBufferRunCommand(void);
|
|||||||
static void WallyBufferExecCompleted(void);
|
static void WallyBufferExecCompleted(void);
|
||||||
static void CompleteOnChosenItem(void);
|
static void CompleteOnChosenItem(void);
|
||||||
static void Intro_WaitForShinyAnimAndHealthbox(void);
|
static void Intro_WaitForShinyAnimAndHealthbox(void);
|
||||||
static u32 CopyWallyMonData(u8 monId, u8 *dst);
|
|
||||||
static void SetWallyMonData(u8 monId);
|
|
||||||
static void WallyDoMoveAnimation(void);
|
|
||||||
|
|
||||||
static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||||
{
|
{
|
||||||
@ -346,63 +343,7 @@ static void WallyHandleBallThrowAnim(void)
|
|||||||
|
|
||||||
static void WallyHandleMoveAnimation(void)
|
static void WallyHandleMoveAnimation(void)
|
||||||
{
|
{
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
BtlController_HandleMoveAnimation(gActiveBattler, FALSE);
|
||||||
|
|
||||||
gAnimMoveTurn = gBattleResources->bufferA[gActiveBattler][3];
|
|
||||||
gAnimMovePower = gBattleResources->bufferA[gActiveBattler][4] | (gBattleResources->bufferA[gActiveBattler][5] << 8);
|
|
||||||
gAnimMoveDmg = gBattleResources->bufferA[gActiveBattler][6] | (gBattleResources->bufferA[gActiveBattler][7] << 8) | (gBattleResources->bufferA[gActiveBattler][8] << 16) | (gBattleResources->bufferA[gActiveBattler][9] << 24);
|
|
||||||
gAnimFriendship = gBattleResources->bufferA[gActiveBattler][10];
|
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
|
||||||
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
gBattlerControllerFuncs[gActiveBattler] = WallyDoMoveAnimation;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void WallyDoMoveAnimation(void)
|
|
||||||
{
|
|
||||||
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
|
||||||
|
|
||||||
switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
|
||||||
{
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
|
||||||
DoMoveAnim(move);
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
gAnimScriptCallback();
|
|
||||||
if (!gAnimScriptActive)
|
|
||||||
{
|
|
||||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
|
||||||
{
|
|
||||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
|
||||||
}
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
|
||||||
{
|
|
||||||
CopyAllBattleSpritesInvisibilities();
|
|
||||||
TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8));
|
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
|
||||||
WallyBufferExecCompleted();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void WallyHandlePrintString(void)
|
static void WallyHandlePrintString(void)
|
||||||
|
@ -2185,6 +2185,56 @@ static void Controller_FaintOpponentMon(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void Controller_DoMoveAnimation(void)
|
||||||
|
{
|
||||||
|
u16 move = gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8);
|
||||||
|
|
||||||
|
switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
||||||
|
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
||||||
|
{
|
||||||
|
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
||||||
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||||
|
}
|
||||||
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||||
|
{
|
||||||
|
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
||||||
|
DoMoveAnim(move);
|
||||||
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
gAnimScriptCallback();
|
||||||
|
if (!gAnimScriptActive)
|
||||||
|
{
|
||||||
|
u8 multihit = gBattleResources->bufferA[gActiveBattler][11];
|
||||||
|
|
||||||
|
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
||||||
|
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
||||||
|
{
|
||||||
|
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||||
|
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
|
||||||
|
}
|
||||||
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||||
|
{
|
||||||
|
CopyAllBattleSpritesInvisibilities();
|
||||||
|
TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleResources->bufferA[gActiveBattler][1] | (gBattleResources->bufferA[gActiveBattler][2] << 8));
|
||||||
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||||
|
BattleControllerComplete(gActiveBattler);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void Controller_HandleTrainerSlideBack(void)
|
static void Controller_HandleTrainerSlideBack(void)
|
||||||
{
|
{
|
||||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||||
@ -2571,6 +2621,27 @@ void BtlController_HandleBallThrowAnim(u32 battler, u32 target, u32 animId, bool
|
|||||||
HandleBallThrow(battler, target, animId, allowCriticalCapture);
|
HandleBallThrow(battler, target, animId, allowCriticalCapture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BtlController_HandleMoveAnimation(u32 battler, bool32 updateTvData)
|
||||||
|
{
|
||||||
|
if (!IsBattleSEPlaying(battler))
|
||||||
|
{
|
||||||
|
u16 move = gBattleResources->bufferA[battler][1] | (gBattleResources->bufferA[battler][2] << 8);
|
||||||
|
|
||||||
|
gAnimMoveTurn = gBattleResources->bufferA[battler][3];
|
||||||
|
gAnimMovePower = gBattleResources->bufferA[battler][4] | (gBattleResources->bufferA[battler][5] << 8);
|
||||||
|
gAnimMoveDmg = gBattleResources->bufferA[battler][6] | (gBattleResources->bufferA[battler][7] << 8) | (gBattleResources->bufferA[battler][8] << 16) | (gBattleResources->bufferA[battler][9] << 24);
|
||||||
|
gAnimFriendship = gBattleResources->bufferA[battler][10];
|
||||||
|
gWeatherMoveAnim = gBattleResources->bufferA[battler][12] | (gBattleResources->bufferA[battler][13] << 8);
|
||||||
|
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[battler][16];
|
||||||
|
gTransformedPersonalities[battler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||||
|
gTransformedOtIds[battler] = gAnimDisableStructPtr->transformedMonOtId;
|
||||||
|
gBattleSpritesDataPtr->healthBoxesData[battler].animationState = 0;
|
||||||
|
gBattlerControllerFuncs[battler] = Controller_DoMoveAnimation;
|
||||||
|
if (updateTvData)
|
||||||
|
BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void BtlController_HandlePrintString(u32 battler, bool32 updateTvData, bool32 arenaPtsDeduct)
|
void BtlController_HandlePrintString(u32 battler, bool32 updateTvData, bool32 arenaPtsDeduct)
|
||||||
{
|
{
|
||||||
u16 *stringId;
|
u16 *stringId;
|
||||||
|
Loading…
Reference in New Issue
Block a user