Sync battle anim - bug
This commit is contained in:
+34
-34
@@ -6,16 +6,16 @@
|
|||||||
static void AnimMegahornHorn(struct Sprite *sprite);
|
static void AnimMegahornHorn(struct Sprite *sprite);
|
||||||
static void AnimLeechLifeNeedle(struct Sprite *sprite);
|
static void AnimLeechLifeNeedle(struct Sprite *sprite);
|
||||||
static void AnimTranslateWebThread(struct Sprite *sprite);
|
static void AnimTranslateWebThread(struct Sprite *sprite);
|
||||||
|
static void AnimTranslateWebThread_Step(struct Sprite *sprite);
|
||||||
static void AnimStringWrap(struct Sprite *sprite);
|
static void AnimStringWrap(struct Sprite *sprite);
|
||||||
|
static void AnimStringWrap_Step(struct Sprite *sprite);
|
||||||
static void AnimSpiderWeb(struct Sprite *sprite);
|
static void AnimSpiderWeb(struct Sprite *sprite);
|
||||||
|
static void AnimSpiderWeb_Step(struct Sprite *sprite);
|
||||||
|
static void AnimSpiderWeb_End(struct Sprite *sprite);
|
||||||
static void AnimTranslateStinger(struct Sprite *sprite);
|
static void AnimTranslateStinger(struct Sprite *sprite);
|
||||||
static void AnimMissileArc(struct Sprite *sprite);
|
static void AnimMissileArc(struct Sprite *sprite);
|
||||||
|
static void AnimMissileArc_Step(struct Sprite *sprite);
|
||||||
static void AnimTailGlowOrb(struct Sprite *sprite);
|
static void AnimTailGlowOrb(struct Sprite *sprite);
|
||||||
static void sub_80B41C0(struct Sprite *sprite);
|
|
||||||
static void sub_80B4274(struct Sprite *sprite);
|
|
||||||
static void sub_80B42E8(struct Sprite *sprite);
|
|
||||||
static void sub_80B4344(struct Sprite *sprite);
|
|
||||||
static void AnimMissileArcStep(struct Sprite *sprite);
|
|
||||||
|
|
||||||
static const union AffineAnimCmd sAffineAnim_MegahornHorn_0[] =
|
static const union AffineAnimCmd sAffineAnim_MegahornHorn_0[] =
|
||||||
{
|
{
|
||||||
@@ -210,11 +210,11 @@ static void AnimMegahornHorn(struct Sprite *sprite)
|
|||||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||||
}
|
}
|
||||||
sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
|
sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[0];
|
||||||
sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
|
sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1];
|
||||||
sprite->data[0] = gBattleAnimArgs[4];
|
sprite->data[0] = gBattleAnimArgs[4];
|
||||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||||
sprite->callback = StartAnimLinearTranslation;
|
sprite->callback = StartAnimLinearTranslation;
|
||||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||||
}
|
}
|
||||||
@@ -231,11 +231,11 @@ static void AnimLeechLifeNeedle(struct Sprite *sprite)
|
|||||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||||
}
|
}
|
||||||
sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
|
sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[0];
|
||||||
sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
|
sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1];
|
||||||
sprite->data[0] = gBattleAnimArgs[2];
|
sprite->data[0] = gBattleAnimArgs[2];
|
||||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||||
sprite->callback = StartAnimLinearTranslation;
|
sprite->callback = StartAnimLinearTranslation;
|
||||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||||
}
|
}
|
||||||
@@ -257,8 +257,8 @@ static void AnimTranslateWebThread(struct Sprite *sprite)
|
|||||||
sprite->data[3] = sprite->y;
|
sprite->data[3] = sprite->y;
|
||||||
if (!gBattleAnimArgs[4])
|
if (!gBattleAnimArgs[4])
|
||||||
{
|
{
|
||||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -266,10 +266,10 @@ static void AnimTranslateWebThread(struct Sprite *sprite)
|
|||||||
}
|
}
|
||||||
BattleAnim_InitLinearTranslationWithDuration(sprite);
|
BattleAnim_InitLinearTranslationWithDuration(sprite);
|
||||||
sprite->data[5] = gBattleAnimArgs[3];
|
sprite->data[5] = gBattleAnimArgs[3];
|
||||||
sprite->callback = sub_80B41C0;
|
sprite->callback = AnimTranslateWebThread_Step;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80B41C0(struct Sprite *sprite)
|
static void AnimTranslateWebThread_Step(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
if (AnimTranslateLinear(sprite))
|
if (AnimTranslateLinear(sprite))
|
||||||
{
|
{
|
||||||
@@ -290,10 +290,10 @@ static void AnimStringWrap(struct Sprite *sprite)
|
|||||||
sprite->y += gBattleAnimArgs[1];
|
sprite->y += gBattleAnimArgs[1];
|
||||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||||
sprite->y += 8;
|
sprite->y += 8;
|
||||||
sprite->callback = sub_80B4274;
|
sprite->callback = AnimStringWrap_Step;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80B4274(struct Sprite *sprite)
|
static void AnimStringWrap_Step(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
if (++sprite->data[0] == 3)
|
if (++sprite->data[0] == 3)
|
||||||
{
|
{
|
||||||
@@ -311,10 +311,10 @@ static void AnimSpiderWeb(struct Sprite *sprite)
|
|||||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
|
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
|
||||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
|
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
|
||||||
sprite->data[0] = 16;
|
sprite->data[0] = 16;
|
||||||
sprite->callback = sub_80B42E8;
|
sprite->callback = AnimSpiderWeb_Step;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80B42E8(struct Sprite *sprite)
|
static void AnimSpiderWeb_Step(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
if (sprite->data[2] < 20)
|
if (sprite->data[2] < 20)
|
||||||
{
|
{
|
||||||
@@ -328,12 +328,12 @@ static void sub_80B42E8(struct Sprite *sprite)
|
|||||||
if (sprite->data[0] == 0)
|
if (sprite->data[0] == 0)
|
||||||
{
|
{
|
||||||
sprite->invisible = TRUE;
|
sprite->invisible = TRUE;
|
||||||
sprite->callback = sub_80B4344;
|
sprite->callback = AnimSpiderWeb_End;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80B4344(struct Sprite *sprite)
|
static void AnimSpiderWeb_End(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||||
@@ -377,8 +377,8 @@ static void AnimTranslateStinger(struct Sprite *sprite)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
InitSpritePosToAnimAttacker(sprite, 1);
|
InitSpritePosToAnimAttacker(sprite, 1);
|
||||||
lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||||
lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||||
rot = ArcTan2Neg(lVarX - sprite->x, lVarY - sprite->y);
|
rot = ArcTan2Neg(lVarX - sprite->x, lVarY - sprite->y);
|
||||||
rot += 0xC000;
|
rot += 0xC000;
|
||||||
TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rot);
|
TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rot);
|
||||||
@@ -402,15 +402,15 @@ static void AnimMissileArc(struct Sprite *sprite)
|
|||||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||||
sprite->data[0] = gBattleAnimArgs[4];
|
sprite->data[0] = gBattleAnimArgs[4];
|
||||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||||
sprite->data[5] = gBattleAnimArgs[5];
|
sprite->data[5] = gBattleAnimArgs[5];
|
||||||
InitAnimArcTranslation(sprite);
|
InitAnimArcTranslation(sprite);
|
||||||
sprite->callback = AnimMissileArcStep;
|
sprite->callback = AnimMissileArc_Step;
|
||||||
sprite->invisible = TRUE;
|
sprite->invisible = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AnimMissileArcStep(struct Sprite *sprite)
|
static void AnimMissileArc_Step(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->invisible = FALSE;
|
sprite->invisible = FALSE;
|
||||||
|
|
||||||
@@ -447,15 +447,15 @@ static void AnimMissileArcStep(struct Sprite *sprite)
|
|||||||
|
|
||||||
static void AnimTailGlowOrb(struct Sprite *sprite)
|
static void AnimTailGlowOrb(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
if (gBattleAnimArgs[0] == 0)
|
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||||
{
|
{
|
||||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18;
|
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + 18;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18;
|
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 18;
|
||||||
}
|
}
|
||||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||||
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
|
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
|
||||||
|
|||||||
Reference in New Issue
Block a user