fix safari object throw and ghost dodging throw

This commit is contained in:
cawtds
2025-04-04 16:52:22 +02:00
parent 409f971403
commit 1dcdf6e6ec
2 changed files with 41 additions and 0 deletions

View File

@@ -102,6 +102,8 @@ static void TimerBallOpenParticleAnimation(u8);
static void PremierBallOpenParticleAnimation(u8);
static void CB_CriticalCaptureThrownBallMovement(struct Sprite *sprite);
static void SpriteCB_SafariBaitOrRock_Init(struct Sprite *);
static void GhostBallDodge(struct Sprite *sprite);
static void GhostBallDodge2(struct Sprite *sprite);
struct CaptureStar
{
@@ -1093,6 +1095,10 @@ static void SpriteCB_Ball_Arc(struct Sprite *sprite)
{
sprite->callback = SpriteCB_Ball_Block;
}
else if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_GHOST_DODGE)
{
sprite->callback = GhostBallDodge;
}
else
{
StartSpriteAnim(sprite, 1);
@@ -2790,3 +2796,34 @@ static void CB_CriticalCaptureThrownBallMovement(struct Sprite *sprite)
}
}
// FRLG
static void GhostBallDodge(struct Sprite *sprite)
{
sprite->x += sprite->x2;
sprite->y += sprite->y2;
sprite->x2 = sprite->y2 = 0;
sprite->data[0] = 0x22;
sprite->data[1] = sprite->x;
sprite->data[2] = sprite->x - 8;
sprite->data[3] = sprite->y;
sprite->data[4] = 0x90;
sprite->data[5] = 0x20;
InitAnimArcTranslation(sprite);
TranslateAnimVerticalArc(sprite);
sprite->callback = GhostBallDodge2;
}
static void GhostBallDodge2(struct Sprite *sprite)
{
if (!TranslateAnimVerticalArc(sprite))
{
if ((sprite->y + sprite->y2) < 65)
return;
}
sprite->data[0] = 0;
sprite->callback = DestroySpriteAfterOneFrame;
gDoingBattleAnim = FALSE;
UpdateOamPriorityInAllHealthboxes(1, FALSE);
}

View File

@@ -2536,6 +2536,8 @@ void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 is
xPos,
yPos,
subpriority);
if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) && GetBattlerPosition(battler) == B_POSITION_PLAYER_LEFT)
gBattlerSpriteIds[battler] = gBattleStruct->trainerSlideSpriteIds[battler];
gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.paletteNum = battler;
}
@@ -2560,6 +2562,8 @@ void BtlController_HandleTrainerSlide(u32 battler, u32 trainerPicId)
80,
(8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80,
30);
if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) && GetBattlerPosition(battler) == B_POSITION_PLAYER_LEFT)
gBattlerSpriteIds[battler] = gBattleStruct->trainerSlideSpriteIds[battler];
gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].x2 = -96;
gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].sSpeedX = 2;