A few new gen 9 move animations (#3989)

* A few new gen 9 move animations

* draco meteor anim

tmp

* applied suggestions

* fix compile

* add more crystals to ice spinner

* further fixes

---------

Co-authored-by: ghoulslash <41651341+ghoulslash@users.noreply.github.com>
This commit is contained in:
Alex 2024-01-17 03:33:49 +01:00 committed by GitHub
parent 8f99ef16be
commit 87472d4a6c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 347 additions and 83 deletions

View file

@ -3316,28 +3316,91 @@ InitRoomAnimation:
createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, ANIM_TARGET, 1
return
@ Credits to Skeli
Move_DRACO_METEOR:
loadspritegfx ANIM_TAG_WARM_ROCK
loadspritegfx ANIM_TAG_GOLD_STARS
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_ICE_SPIKES
playsewithpan SE_M_CHARGE, SOUND_PAN_TARGET
fadetobg BG_COSMIC
waitbgfadein
loadspritegfx ANIM_TAG_ROCKS @Rocks
loadspritegfx ANIM_TAG_FAIRY_LOCK_CHAINS @Gray Colour
loadspritegfx ANIM_TAG_WATER_GUN @Sparkles Trail
loadspritegfx ANIM_TAG_FIRE_PLUME @Eruption
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, 0x2C41
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_WATER_GUN, 0, 10, 10, RGB_PURPLE @;Purple
monbg ANIM_TARGET
setalpha 12, 8
waitforvisualfinish
createsprite gDracoMeteorSmashSpriteTemplate, 131, 5, -47, -63, 72, 32, 30
delay 10
createsprite gDracoMeteorSmashSpriteTemplate, 131, 5, -111, -63, 8, 32, 30
delay 40
createsprite gDracoMetorSpriteTemplate, 131, 4, 0, 0, 0, 30
createsprite gDracoMeteorSmashSpriteTemplate, 131, 5, -79, -63, 40, 32, 30
delay 20
playsewithpan SE_FALL, SOUND_PAN_ATTACKER
@setblends 0x80C
call DracoMeteor1
delay 7
call DracoMeteor2
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 10
restorebg
waitbgfadein
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x28, 0x20 @; For Meteor 1
createvisualtask AnimTask_HorizontalShake, 5, 3, 5, 2, 0x1
delay 7
call DracoMeteor3
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xFFF8, 0x20 @; For Meteor 2
delay 7
call DracoMeteor4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x15, 0x20 @; For Meteor 3
delay 7
call DracoMeteor1
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xFFF8, 0x20 @; For Meteor 4
createvisualtask AnimTask_HorizontalShake, 5, 3, 5, 2, 0x1
delay 7
call DracoMeteor2
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x28, 0x20 @; For Meteor 1
delay 7
call DracoMeteor3
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x15, 0x20 @; For Meteor 3
delay 15
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x15, 0x20 @; For Meteor 3
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 2, 1
delay 7
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, 0x2C41
waitforvisualfinish
clearmonbg ANIM_TARGET
blendoff
end
DracoMeteor1:
createsprite gDracoMeteorRocksSpriteTemplate 0x83, 5, 0xffd0, 0xffc0, 0x28, 0x20, 0x19
delay 2
createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xffd0, 0xffc0, 0x28, 0x20, 0x19
delay 2
createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xffd0, 0xffc0, 0x28, 0x20, 0x19
return
DracoMeteor2:
createsprite gDracoMeteorRocksSpriteTemplate 0x83, 5, 0xff90, 0xffc0, 0xFFF8, 0x20, 0x19
delay 2
createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xff90, 0xffc0, 0xFFF8, 0x20, 0x19
delay 2
createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xff90, 0xffc0, 0xFFF8, 0x20, 0x19
return
DracoMeteor3:
createsprite gDracoMeteorRocksSpriteTemplate 0x83, 5, 0xffb0, 0xffc0, 0x18, 0x20, 0x19
delay 2
createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xffb0, 0xffc0, 0x18, 0x20, 0x19
delay 2
createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xffb0, 0xffc0, 0x18, 0x20, 0x19
return
DracoMeteor4:
createsprite gDracoMeteorRocksSpriteTemplate 0x83, 5, 0xffb0, 0xffc0, 0xFFF8, 0x20, 0x19
delay 2
createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xffb0, 0xffc0, 0xFFF8, 0x20, 0x19
delay 2
createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xffb0, 0xffc0, 0xFFF8, 0x20, 0x19
return
Move_DISCHARGE:
loadspritegfx ANIM_TAG_IMPACT
@ -16719,40 +16782,32 @@ Move_DOUBLE_SHOCK::
loadspritegfx ANIM_TAG_ELECTRIC_ORBS
loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT
loadspritegfx ANIM_TAG_LIGHTNING
monbg ANIM_TARGET
setalpha 12, 8
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 3, 0, 12, RGB_BLACK
waitforvisualfinish
fadetobg BG_MAX_LIGHTNING
waitbgfadeout
createvisualtask AnimTask_StartSlidingBg, 0x5, 0xff00, 0x0, 0x1, 0xffff
waitbgfadein
createvisualtask AnimTask_ElectricChargingParticles, 0x2, ANIM_ATTACKER, 30, 0, 3 @;Amount, Slowness, Slowness, Compaction
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
delay 12
createsprite gGrowingShockWaveOrbSpriteTemplate, ANIM_ATTACKER, 0, 0x0
waitforvisualfinish
delay 1
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK
delay 1
delay 2
waitforvisualfinish
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
createvisualtask AnimTask_InvertScreenColor, 2, 0x1 | 0x2 | 0x4
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 6, -16, -32
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 24, -32
delay 1
delay 2
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, -16, -16
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 24, -16
delay 1
delay 2
createsprite gLightningSpriteTemplate, ANIM_TARGET, 6, -16, 16
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 24, 16
delay 1
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
createvisualtask AnimTask_InvertScreenColor, 2, 0x1 | 0x2 | 0x4
delay 2
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2
delay 1
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 11, 1
waitforvisualfinish
call UnsetPsychicBg
waitforvisualfinish
clearmonbg ANIM_TARGET
blendoff
end
Move_SYRUP_BOMB::
@ -16956,6 +17011,155 @@ Move_ALLURING_VOICE::
waitforvisualfinish
end
@ Credits to Z-nogyroP
Move_AQUA_CUTTER::
loadspritegfx ANIM_TAG_SLASH_2
loadspritegfx ANIM_TAG_SMALL_BUBBLES
loadspritegfx ANIM_TAG_ICE_CRYSTALS
loadspritegfx ANIM_TAG_WATER_IMPACT
createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 32
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET
delay 2
createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 48
delay 2
createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 64
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET
delay 2
createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 80
delay 2
waitforvisualfinish
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 4
waitforvisualfinish
loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 20, 3
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 4, 8, 1
createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 20, ANIM_TARGET
delay 4
createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 20, -20, 20, ANIM_TARGET
delay 4
createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -15, 15, 20, ANIM_TARGET
delay 4
createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, ANIM_TARGET
delay 4
createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -10, -20, 20, ANIM_TARGET
delay 4
createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 16, -8, 20, ANIM_TARGET
delay 4
createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 5, 8, 20, ANIM_TARGET
delay 4
createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 20, ANIM_TARGET
waitforvisualfinish
end
@ Credits to Z-nogyroP
Move_GIGATON_HAMMER::
loadspritegfx ANIM_TAG_ROCKS
loadspritegfx ANIM_TAG_WOOD_HAMMER_HAMMER
loadspritegfx ANIM_TAG_CLAW_SLASH
loadspritegfx ANIM_TAG_IMPACT
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 4, 2, 4
createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK
createsprite gWoodHammerHammerSpriteTemplate, ANIM_TARGET, 2
delay 60
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 12, 4
delay 18
createvisualtask AnimTask_SquishTarget, 0x2
delay 6
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 50
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 50
call GigatonHammerImpact
waitforvisualfinish
end
GigatonHammerImpact:
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2
createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xfff4, 0x20, 0x3, 0x4
createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0x8, 0x1f, 0x2, 0x2
createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xfffc, 0x1c, 0x2, 0x3
createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xc, 0x1e, 0x4, 0x3
return
@ Credits to Z-nogyroP
Move_ICE_SPINNER::
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_RAPID_SPIN
monbg ANIM_ATTACKER
createsprite gRapidSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, -32, 40, -2
createvisualtask AnimTask_RapinSpinMonElevation, 2, 0, 2, 0
loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 8, 4
loadspritegfx ANIM_TAG_ICE_CRYSTALS
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 47, 1
call IceCrystalSpinEffect
call IceCrystalSpinEffect
waitforvisualfinish
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2
createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 10, 1, 0
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
waitforvisualfinish
delay 8
createvisualtask AnimTask_RapinSpinMonElevation, 2, 0, 2, 1
loopsewithpan SE_M_ICY_WIND, SOUND_PAN_ATTACKER, 8, 4
loadspritegfx ANIM_TAG_ICE_CRYSTALS
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 47, 1
call IceCrystalSpinEffect
call IceCrystalSpinEffect
waitforvisualfinish
clearmonbg ANIM_ATTACKER
end
IceCrystalSpinEffect:
createsprite gIceCrystalSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER
delay 2
createsprite gIceCrystalSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER
delay 2
createsprite gIceCrystalSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER
delay 2
createsprite gIceCrystalSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER
delay 2
createsprite gIceCrystalSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER
delay 2
createsprite gIceCrystalSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER
delay 2
return
@ Credits to Z-nogyroP
Move_RAGING_BULL::
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_ANGER
loadspritegfx ANIM_TAG_BREATH
createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2
loopsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 4, 2
createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, -28
delay 20
createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28
waitforvisualfinish
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4
waitforvisualfinish
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
call SetImpactBackground
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4
delay 3
waitforvisualfinish
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3
waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1
waitforvisualfinish
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
delay 3
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7
waitforvisualfinish
restorebg
waitbgfadein
end
Move_TERA_BLAST::
Move_AXE_KICK::
Move_LAST_RESPECTS::
@ -16965,7 +17169,6 @@ Move_JET_PUNCH::
Move_SPICY_EXTRACT::
Move_SPIN_OUT::
Move_POPULATION_BOMB::
Move_ICE_SPINNER::
Move_GLAIVE_RUSH::
Move_REVIVAL_BLESSING::
Move_SALT_CURE::
@ -16977,7 +17180,6 @@ Move_KOWTOW_CLEAVE::
Move_FLOWER_TRICK::
Move_TORCH_SONG::
Move_AQUA_STEP::
Move_RAGING_BULL::
Move_MAKE_IT_RAIN::
Move_RUINATION::
Move_COLLISION_COURSE::
@ -16991,9 +17193,7 @@ Move_HYPER_DRILL::
Move_TWIN_BEAM::
Move_RAGE_FIST::
Move_ARMOR_CANNON::
Move_GIGATON_HAMMER::
Move_COMEUPPANCE::
Move_AQUA_CUTTER::
Move_BLAZING_TORQUE::
Move_WICKED_TORQUE::
Move_NOXIOUS_TORQUE::

View file

@ -296,6 +296,8 @@ extern const union AffineAnimCmd *const gSwiftStarAffineAnimTable[];
extern const union AnimCmd *const gMetronomeThroughtBubbleAnimTable[];
extern const union AffineAnimCmd *const gStockpileAbsorptionOrbAffineAnimTable[];
extern const union AnimCmd *const gSlashSliceAnimTable[];
extern const union AffineAnimCmd* const sSpriteAffineAnimTable_HydroCannonBall[];
extern const union AffineAnimCmd sSpriteAffineAnim_HydroCannonBall[];
// battle_anim_effects_2.c
void AnimUproarRing(struct Sprite *sprite);
@ -544,6 +546,7 @@ void AnimDragonFireToTarget(struct Sprite *sprite);
void AnimDragonDanceOrb(struct Sprite *sprite);
void AnimOverheatFlame(struct Sprite *sprite);
void AnimOutrageFlame(struct Sprite *sprite);
void AnimDracoMeteorRock(struct Sprite *sprite);
// battle_anim_new.c
void CoreEnforcerLoadBeamTarget(struct Sprite *sprite);

View file

@ -12,6 +12,7 @@ static void UpdateDragonDanceScanlineEffect(struct Task *);
static void AnimDragonRushStep(struct Sprite *sprite);
static void AnimSpinningDracoMeteor(struct Sprite *sprite);
static void AnimSpinningDracoMeteorFinish(struct Sprite *sprite);
static void AnimDracoMeteorRock_Step(struct Sprite *sprite);
EWRAM_DATA static u16 sUnusedOverheatData[7] = {0};
@ -185,6 +186,30 @@ const struct SpriteTemplate gOverheatFlameSpriteTemplate =
.callback = AnimOverheatFlame,
};
// Draco Meteor Rocks
const struct SpriteTemplate gDracoMeteorRocksSpriteTemplate =
{
.tileTag = ANIM_TAG_ROCKS,
.paletteTag = ANIM_TAG_FAIRY_LOCK_CHAINS,
.oam = &gOamData_AffineNormal_ObjNormal_32x32,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimDracoMeteorRock,
};
// Draco Meteor Tail
const struct SpriteTemplate gDracoMeteorTailSpriteTemplate =
{
.tileTag = ANIM_TAG_WATER_GUN,
.paletteTag = ANIM_TAG_WATER_GUN,
.oam = &gOamData_AffineDouble_ObjBlend_16x16,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = sSpriteAffineAnimTable_HydroCannonBall,
.callback = AnimDracoMeteorRock,
};
const union AnimCmd gDragonRushAnimCmds[] =
{
ANIMCMD_FRAME(0, 4),
@ -566,3 +591,39 @@ static void AnimOverheatFlame_Step(struct Sprite *sprite)
if (++sprite->data[0] > sprite->data[3])
DestroyAnimSprite(sprite);
}
void AnimDracoMeteorRock(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
{
sprite->data[0] = sprite->x - gBattleAnimArgs[0];
sprite->data[2] = sprite->x - gBattleAnimArgs[2];
}
else
{
sprite->data[0] = sprite->x + gBattleAnimArgs[0];
sprite->data[2] = sprite->x + gBattleAnimArgs[2];
}
sprite->data[1] = sprite->y + gBattleAnimArgs[1];
sprite->data[3] = sprite->y + gBattleAnimArgs[3];
sprite->data[4] = gBattleAnimArgs[4];
sprite->data[6] = gBattleAnimArgs[2];
sprite->data[7] = gBattleAnimArgs[3];
sprite->x = sprite->data[0];
sprite->y = sprite->data[1];
sprite->callback = AnimDracoMeteorRock_Step;
}
static void AnimDracoMeteorRock_Step(struct Sprite *sprite)
{
sprite->x2 = ((sprite->data[2] - sprite->data[0]) * sprite->data[5]) / sprite->data[4];
sprite->y2 = ((sprite->data[3] - sprite->data[1]) * sprite->data[5]) / sprite->data[4];
if (sprite->data[5] == sprite->data[4])
DestroyAnimSprite(sprite);
sprite->data[5]++;
}

View file

@ -4803,17 +4803,6 @@ static void AnimForesightMagnifyingGlass_Step(struct Sprite *sprite)
}
}
const struct SpriteTemplate gDracoMeteorSmashSpriteTemplate =
{
.tileTag = ANIM_TAG_WARM_ROCK,
.paletteTag = ANIM_TAG_WARM_ROCK,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimMeteorMashStar,
};
static void AnimMeteorMashStar_Step(struct Sprite *sprite)
{
sprite->x2 = ((sprite->data[2] - sprite->data[0]) * sprite->data[5]) / sprite->data[4];

View file

@ -174,6 +174,17 @@ const struct SpriteTemplate gIceCrystalSpiralInwardSmall =
.callback = AnimIcePunchSwirlingParticle,
};
const struct SpriteTemplate gIceCrystalSpinSpriteTemplate =
{
.tileTag = ANIM_TAG_ICE_CRYSTALS,
.paletteTag = ANIM_TAG_ICE_CRYSTALS,
.oam = &gOamData_AffineDouble_ObjBlend_8x16,
.anims = gAnims_IceCrystalLarge,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimParticleInVortex,
};
static const union AffineAnimCmd sAffineAnim_IceBeamInnerCrystal[] =
{
AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1),

View file

@ -4241,11 +4241,11 @@ const struct SpriteTemplate gSpriteTemplate_SpiritBreakExplode = {
};
// chloroblast
static const union AffineAnimCmd sSpriteAffineAnim_HydroCannonBall[] = {
const union AffineAnimCmd sSpriteAffineAnim_HydroCannonBall[] = {
AFFINEANIMCMD_FRAME(16, 16, 0, 16), //Double in size
AFFINEANIMCMD_END
};
static const union AffineAnimCmd* const sSpriteAffineAnimTable_HydroCannonBall[] = {
const union AffineAnimCmd* const sSpriteAffineAnimTable_HydroCannonBall[] = {
sSpriteAffineAnim_HydroCannonBall,
};
const struct SpriteTemplate gSpriteTemplate_ChloroblastShot = {