New Attack Animations: 25w20a (#6886)
This commit is contained in:
parent
096493aa35
commit
7f4f391e9b
File diff suppressed because it is too large
Load Diff
@ -2581,7 +2581,7 @@ static void AnimPencil_Step(struct Sprite *sprite)
|
||||
sprite->y -= 1;
|
||||
sprite->data[2]++;
|
||||
if (sprite->data[2] % 10 == 0)
|
||||
PlaySE12WithPanning(SE_M_SKETCH, sprite->data[6]);
|
||||
PlaySE12WithPanning((gAnimMoveIndex == MOVE_DOODLE) ? SE_M_REVERSAL : SE_M_SKETCH, sprite->data[6]);
|
||||
}
|
||||
sprite->data[4] += sprite->data[3];
|
||||
if (sprite->data[4] > 31)
|
||||
|
||||
@ -343,6 +343,19 @@ static const union AffineAnimCmd sAffineAnim_GrowingElectricOrb_2[] =
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd sAffineAnim_GrowingElectricOrb_3[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 60),
|
||||
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_LOOP(0),
|
||||
AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFC, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 5),
|
||||
AFFINEANIMCMD_LOOP(10),
|
||||
AFFINEANIMCMD_FRAME(-4, -4, 0, 60),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd sAffineAnim_GrowingElectricOrb_4[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(5, 5, 0, 0),
|
||||
@ -368,6 +381,11 @@ const union AffineAnimCmd *const gAffineAnims_GrowingElectricOrb2[] =
|
||||
sAffineAnim_GrowingElectricOrb_4,
|
||||
};
|
||||
|
||||
const union AffineAnimCmd *const gAffineAnims_GrowingElectricOrb3[] =
|
||||
{
|
||||
sAffineAnim_GrowingElectricOrb_3,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gGrowingChargeOrbSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
|
||||
@ -391,6 +409,18 @@ const struct SpriteTemplate gGrowingChargeOrb2SpriteTemplate =
|
||||
.callback = AnimGrowingChargeOrb,
|
||||
};
|
||||
|
||||
// For Dynamax Cannon - orb gets smaller at the end
|
||||
const struct SpriteTemplate gGrowingChargeOrb3SpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
|
||||
.paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
|
||||
.oam = &gOamData_AffineNormal_ObjBlend_64x64,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gAffineAnims_GrowingElectricOrb3,
|
||||
.callback = AnimGrowingChargeOrb,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_ElectricPuff[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 3),
|
||||
@ -492,6 +522,17 @@ const struct SpriteTemplate gFairyLockChainsSpriteTemplate =
|
||||
.callback = AnimVoltTackleBolt,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gCollisionCourseSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_SMALL_EMBER,
|
||||
.paletteTag = ANIM_TAG_SMALL_EMBER,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_64x32,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimVoltTackleBolt,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gGrowingShockWaveOrbSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
|
||||
@ -1256,19 +1297,25 @@ void AnimTask_VoltTackleBolt(u8 taskId)
|
||||
static bool8 CreateVoltTackleBolt(struct Task *task, u8 taskId)
|
||||
{
|
||||
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);
|
||||
switch(gAnimMoveIndex)
|
||||
{
|
||||
case MOVE_FAIRY_LOCK:
|
||||
spriteId = CreateSprite(&gFairyLockChainsSpriteTemplate, task->data[3], task->data[5] + 10, 35);
|
||||
break;
|
||||
case MOVE_COLLISION_COURSE:
|
||||
spriteId = CreateSprite(&gCollisionCourseSpriteTemplate, task->data[3], task->data[5], 35);
|
||||
break;
|
||||
default:
|
||||
spriteId = CreateSprite(&gVoltTackleBoltSpriteTemplate, task->data[3], task->data[5], 35);
|
||||
}
|
||||
bool32 doDestroyOamMatrix = (gAnimMoveIndex == MOVE_FAIRY_LOCK) || (gAnimMoveIndex == MOVE_COLLISION_COURSE);
|
||||
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].data[6] = taskId;
|
||||
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.
|
||||
gSprites[spriteId].data[1] = (gAnimMoveIndex == MOVE_FAIRY_LOCK) ? 25 : 12; // How long the chains / bolts stay on screen.
|
||||
gSprites[spriteId].data[2] = doDestroyOamMatrix; // Whether to destroy the Oam Matrix.
|
||||
task->data[7]++;
|
||||
}
|
||||
|
||||
|
||||
@ -356,6 +356,17 @@ const struct SpriteTemplate gSkyAttackBirdSpriteTemplate =
|
||||
.callback = AnimSkyAttackBird,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gGlaiveRushSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_DRAGON_ASCENT,
|
||||
.paletteTag = ANIM_TAG_DRAGON_ASCENT,
|
||||
.oam = &gOamData_AffineNormal_ObjNormal_64x64,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimSkyAttackBird,
|
||||
};
|
||||
|
||||
// same as AnimEllipticalGust but centered on targets in a double battle
|
||||
static void AnimEllipticalGustCentered(struct Sprite *sprite)
|
||||
{
|
||||
|
||||
@ -4403,6 +4403,17 @@ const struct SpriteTemplate gUTurnBallBackSpriteTemplate =
|
||||
.callback = AnimAbsorptionOrb,
|
||||
};
|
||||
|
||||
// dynamax cannon
|
||||
const struct SpriteTemplate gSpriteTemplate_DynamaxCannonOrb = {
|
||||
.tileTag = ANIM_TAG_HYDRO_PUMP,
|
||||
.paletteTag = ANIM_TAG_HYDRO_PUMP,
|
||||
.oam = &gOamData_AffineDouble_ObjNormal_16x16,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = sSpriteAffineAnimTable_HydroCannonBall,
|
||||
.callback = AnimShadowBall
|
||||
};
|
||||
|
||||
// wicked blow
|
||||
static const union AffineAnimCmd sSpriteAffineAnim_DrainPunchFist[] = {
|
||||
AFFINEANIMCMD_FRAME(256, 256, 0, 1), //Double sprite size
|
||||
|
||||
@ -1078,3 +1078,14 @@ const struct SpriteTemplate gSaltCureSwirlSpriteTemplate =
|
||||
.affineAnims = gAffineAnims_Whirlpool,
|
||||
.callback = AnimParticleInVortex,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gRockPlumeSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_ROCKS,
|
||||
.paletteTag = ANIM_TAG_ROCKS,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = gAnims_FlyingRock,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimDirtPlumeParticle,
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user