Fairy Lock animation fix (#4111)
* Fairy Lock animation fix * remove comment * fairy lock anim hopefully works --------- Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
This commit is contained in:
parent
512ab98bfe
commit
065c0ec588
3 changed files with 27 additions and 6 deletions
|
@ -9210,13 +9210,12 @@ Boomburst_Doubles:
|
||||||
goto Boomburst_Last
|
goto Boomburst_Last
|
||||||
|
|
||||||
Move_FAIRY_LOCK::
|
Move_FAIRY_LOCK::
|
||||||
loadspritegfx ANIM_TAG_CHAIN_LINK @Chain Colour
|
loadspritegfx ANIM_TAG_FAIRY_LOCK_CHAINS
|
||||||
loadspritegfx ANIM_TAG_FAIRY_LOCK_CHAINS @AnimTask is missing for Fairy Lock Chain
|
|
||||||
setalpha 8, 8
|
setalpha 8, 8
|
||||||
monbg ANIM_ATK_PARTNER
|
monbg ANIM_ATK_PARTNER
|
||||||
createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x8, 0x6B1F
|
createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x8, 0x6B1F
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 0x6, 0x4
|
loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 0x6, 0x9
|
||||||
createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x7
|
createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x7
|
||||||
createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x33
|
createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x33
|
||||||
createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x2
|
createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x2
|
||||||
|
|
|
@ -415,6 +415,7 @@ extern const struct OamData gOamData_AffineDouble_ObjNormal_64x64;
|
||||||
extern const struct OamData gOamData_AffineDouble_ObjBlend_64x64;
|
extern const struct OamData gOamData_AffineDouble_ObjBlend_64x64;
|
||||||
extern const struct OamData gOamData_AffineDouble_ObjBlend_64x32;
|
extern const struct OamData gOamData_AffineDouble_ObjBlend_64x32;
|
||||||
extern const struct OamData gOamData_AffineDouble_ObjNormal_8x16;
|
extern const struct OamData gOamData_AffineDouble_ObjNormal_8x16;
|
||||||
|
extern const struct OamData gOamData_AffineDouble_ObjNormal_64x32;
|
||||||
extern const struct OamData gOamData_AffineOff_ObjBlend_16x16;
|
extern const struct OamData gOamData_AffineOff_ObjBlend_16x16;
|
||||||
extern const struct OamData gOamData_AffineDouble_ObjBlend_16x16;
|
extern const struct OamData gOamData_AffineDouble_ObjBlend_16x16;
|
||||||
extern const struct OamData gOamData_AffineNormal_ObjNormal_8x8;
|
extern const struct OamData gOamData_AffineNormal_ObjNormal_8x8;
|
||||||
|
|
|
@ -479,6 +479,17 @@ const struct SpriteTemplate gVoltTackleBoltSpriteTemplate =
|
||||||
.callback = AnimVoltTackleBolt,
|
.callback = AnimVoltTackleBolt,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const struct SpriteTemplate gFairyLockChainsSpriteTemplate =
|
||||||
|
{
|
||||||
|
.tileTag = ANIM_TAG_FAIRY_LOCK_CHAINS,
|
||||||
|
.paletteTag = ANIM_TAG_FAIRY_LOCK_CHAINS,
|
||||||
|
.oam = &gOamData_AffineOff_ObjNormal_64x32,
|
||||||
|
.anims = gDummySpriteAnimTable,
|
||||||
|
.images = NULL,
|
||||||
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
|
.callback = AnimVoltTackleBolt,
|
||||||
|
};
|
||||||
|
|
||||||
const struct SpriteTemplate gGrowingShockWaveOrbSpriteTemplate =
|
const struct SpriteTemplate gGrowingShockWaveOrbSpriteTemplate =
|
||||||
{
|
{
|
||||||
.tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
|
.tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
|
||||||
|
@ -1190,11 +1201,20 @@ void AnimTask_VoltTackleBolt(u8 taskId)
|
||||||
|
|
||||||
static bool8 CreateVoltTackleBolt(struct Task *task, u8 taskId)
|
static bool8 CreateVoltTackleBolt(struct Task *task, u8 taskId)
|
||||||
{
|
{
|
||||||
u8 spriteId = CreateSprite(&gVoltTackleBoltSpriteTemplate, task->data[3], task->data[5], 35);
|
u32 spriteId;
|
||||||
|
bool32 isFairyLock = (gAnimMoveIndex == MOVE_FAIRY_LOCK);
|
||||||
|
|
||||||
|
if (isFairyLock)
|
||||||
|
spriteId = CreateSprite(&gFairyLockChainsSpriteTemplate, task->data[3], task->data[5] + 10, 35);
|
||||||
|
else
|
||||||
|
spriteId = CreateSprite(&gVoltTackleBoltSpriteTemplate, task->data[3], task->data[5], 35);
|
||||||
|
|
||||||
if (spriteId != MAX_SPRITES)
|
if (spriteId != MAX_SPRITES)
|
||||||
{
|
{
|
||||||
gSprites[spriteId].data[6] = taskId;
|
gSprites[spriteId].data[6] = taskId;
|
||||||
gSprites[spriteId].data[7] = 7;
|
gSprites[spriteId].data[7] = 7;
|
||||||
|
gSprites[spriteId].data[1] = isFairyLock ? 25 : 12; // How long the chains / bolts stay on screen.
|
||||||
|
gSprites[spriteId].data[2] = isFairyLock; // Whether to destroy the Oam Matrix.
|
||||||
task->data[7]++;
|
task->data[7]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1220,10 +1240,11 @@ static bool8 CreateVoltTackleBolt(struct Task *task, u8 taskId)
|
||||||
|
|
||||||
static void AnimVoltTackleBolt(struct Sprite *sprite)
|
static void AnimVoltTackleBolt(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
if (++sprite->data[0] > 12)
|
if (++sprite->data[0] > sprite->data[1])
|
||||||
{
|
{
|
||||||
gTasks[sprite->data[6]].data[sprite->data[7]]--;
|
gTasks[sprite->data[6]].data[sprite->data[7]]--;
|
||||||
FreeOamMatrix(sprite->oam.matrixNum);
|
if (!sprite->data[2])
|
||||||
|
FreeOamMatrix(sprite->oam.matrixNum);
|
||||||
DestroySprite(sprite);
|
DestroySprite(sprite);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue