Bitter Blade and Double Shock animations (#3310)

This commit is contained in:
Alex 2023-09-14 20:31:18 +02:00 committed by GitHub
parent 4fb0b55664
commit 80ec67482e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 103 additions and 17 deletions

View File

@ -16382,6 +16382,82 @@ TakeHeartRings:
delay 0x4 delay 0x4
return return
Move_BITTER_BLADE::
loadspritegfx ANIM_TAG_FOCUS_ENERGY
loadspritegfx ANIM_TAG_CLAW_SLASH
loadspritegfx ANIM_TAG_POISON_BUBBLE
loadspritegfx ANIM_TAG_ORBS
loadspritegfx ANIM_TAG_BLUE_STAR
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
splitbgprio_foes ANIM_TARGET
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 3, 0, 12, RGB(14, 6, 24)
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
waitforvisualfinish
call EndureEffect
delay 8
call EndureEffect
delay 8
call EndureEffect
waitforvisualfinish
delay 3
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
createsprite gBitterBladeImpactTemplate ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xFF00, 0xA
delay 2
createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x0, 0x3, 0xa, 0x1
waitforvisualfinish
delay 3
call GigaDrainAbsorbEffect
waitforvisualfinish
delay 15
call HealingEffect
waitforvisualfinish
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 3, 12, 0, RGB(14, 6, 24)
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
blendoff
end
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
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
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
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, -16, -16
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 24, -16
delay 1
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
waitforvisualfinish
clearmonbg ANIM_TARGET
blendoff
end
Move_TERA_BLAST:: Move_TERA_BLAST::
Move_AXE_KICK:: Move_AXE_KICK::
Move_LAST_RESPECTS:: Move_LAST_RESPECTS::
@ -16418,8 +16494,6 @@ Move_HYPER_DRILL::
Move_TWIN_BEAM:: Move_TWIN_BEAM::
Move_RAGE_FIST:: Move_RAGE_FIST::
Move_ARMOR_CANNON:: Move_ARMOR_CANNON::
Move_BITTER_BLADE::
Move_DOUBLE_SHOCK::
Move_GIGATON_HAMMER:: Move_GIGATON_HAMMER::
Move_COMEUPPANCE:: Move_COMEUPPANCE::
Move_AQUA_CUTTER:: Move_AQUA_CUTTER::

View File

@ -4151,7 +4151,7 @@ const struct SpriteTemplate gSkitterSmackImpactTemplate =
}; };
// triple axel // triple axel
const struct SpriteTemplate gTripleAxelIceCrystalSpriteTemplate = const struct SpriteTemplate gTripleAxelIceCrystalSpriteTemplate =
{ {
.tileTag = ANIM_TAG_ICE_CRYSTALS, .tileTag = ANIM_TAG_ICE_CRYSTALS,
.paletteTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS,
@ -4173,7 +4173,7 @@ static const union AffineAnimCmd* const sSpriteAffineAnimTable_WingAttackFeather
{ {
sSpriteAffineAnim_WingAttackFeather, sSpriteAffineAnim_WingAttackFeather,
}; };
const struct SpriteTemplate gDualWingbeatFeatherSpriteTemplate = const struct SpriteTemplate gDualWingbeatFeatherSpriteTemplate =
{ {
.tileTag = ANIM_TAG_WHITE_FEATHER, .tileTag = ANIM_TAG_WHITE_FEATHER,
.paletteTag = ANIM_TAG_WHITE_FEATHER, .paletteTag = ANIM_TAG_WHITE_FEATHER,
@ -4192,7 +4192,7 @@ const struct SpriteTemplate gSpriteTemplate_LargeCrossImpact = {
.anims = gDummySpriteAnimTable, .anims = gDummySpriteAnimTable,
.images = NULL, .images = NULL,
.affineAnims = sSpriteAffineAnimTable_LargeHailRock, .affineAnims = sSpriteAffineAnimTable_LargeHailRock,
.callback = AnimCrossImpact .callback = AnimCrossImpact
}; };
// expanding force // expanding force
@ -4464,7 +4464,7 @@ const struct SpriteTemplate gSpriteTemplate_GlacialLance = {
.anims = gDummySpriteAnimTable, .anims = gDummySpriteAnimTable,
.images = NULL, .images = NULL,
.affineAnims = sSpriteAffineAnimTable_GlacialLance, .affineAnims = sSpriteAffineAnimTable_GlacialLance,
.callback = SpriteCB_GlacialLance .callback = SpriteCB_GlacialLance
}; };
// eerie spell // eerie spell
@ -4611,7 +4611,7 @@ const struct SpriteTemplate gSpriteTemplate_HeadlongRushImpact = {
.images = NULL, .images = NULL,
.affineAnims = sSpriteAffineAnimTable_DrainPunchFist, .affineAnims = sSpriteAffineAnimTable_DrainPunchFist,
.callback = AnimHitSplatBasic .callback = AnimHitSplatBasic
}; };
const struct SpriteTemplate gSpriteTemplate_MaxQuakeDirtGeyser = { const struct SpriteTemplate gSpriteTemplate_MaxQuakeDirtGeyser = {
.tileTag = ANIM_TAG_MUD_SAND, .tileTag = ANIM_TAG_MUD_SAND,
.paletteTag = ANIM_TAG_MUD_SAND, .paletteTag = ANIM_TAG_MUD_SAND,
@ -4696,7 +4696,7 @@ const struct SpriteTemplate gSpriteTemplate_CeaselessEdgeSlash = {
.anims = gSlashSliceAnimTable, .anims = gSlashSliceAnimTable,
.images = NULL, .images = NULL,
.affineAnims = gDummySpriteAffineAnimTable, .affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_FlippableSlash .callback = SpriteCB_FlippableSlash
}; };
// wildbolt storm // wildbolt storm
@ -4758,7 +4758,7 @@ const struct SpriteTemplate gSpriteTemplate_BitterMaliceRing = {
.anims = gDummySpriteAnimTable, .anims = gDummySpriteAnimTable,
.images = NULL, .images = NULL,
.affineAnims = gAffineAnims_ShadowBall, .affineAnims = gAffineAnims_ShadowBall,
.callback = AnimParticleInVortex .callback = AnimParticleInVortex
}; };
//ultra burst //ultra burst
@ -7175,6 +7175,18 @@ const struct SpriteTemplate gSoulStealZStarSpriteTemplate =
.callback = AnimCrossImpact .callback = AnimCrossImpact
}; };
// Bitter Blade
const struct SpriteTemplate gBitterBladeImpactTemplate =
{
.tileTag = ANIM_TAG_CLAW_SLASH,
.paletteTag = ANIM_TAG_POISON_BUBBLE,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
.anims = gAnims_ClawSlash,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimClawSlash
};
// functions // functions
//general //general
void AnimTask_IsTargetPartner(u8 taskId) void AnimTask_IsTargetPartner(u8 taskId)
@ -8297,7 +8309,7 @@ void AnimTask_AllBattlersVisible(u8 taskId)
{ {
spriteId = gBattlerSpriteIds[i]; spriteId = gBattlerSpriteIds[i];
if (IsBattlerSpriteVisible(i) && spriteId != 0xFF) if (IsBattlerSpriteVisible(i) && spriteId != 0xFF)
gSprites[spriteId].invisible = FALSE; gSprites[spriteId].invisible = FALSE;
} }
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
@ -8693,7 +8705,7 @@ void SpriteCB_HorizontalSliceStep(struct Sprite *sprite)
static void SpriteCB_LashOutStrike(struct Sprite* sprite) static void SpriteCB_LashOutStrike(struct Sprite* sprite)
{ {
bool8 flip = GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER; bool8 flip = GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER;
if (gBattleAnimArgs[2]) if (gBattleAnimArgs[2])
flip ^= 1; flip ^= 1;
@ -8871,7 +8883,7 @@ static void SpriteCB_SteelRoller(struct Sprite* sprite)
sprite->x2 = gBattleAnimArgs[0]; sprite->x2 = gBattleAnimArgs[0];
sprite->y2 += gBattleAnimArgs[1]; sprite->y2 += gBattleAnimArgs[1];
sprite->data[4] = gBattleAnimArgs[3]; //Left/Right distance sprite->data[4] = gBattleAnimArgs[3]; //Left/Right distance
sprite->data[5] = gBattleAnimArgs[4]; //Left/Right speed sprite->data[5] = gBattleAnimArgs[4]; //Left/Right speed
@ -8930,10 +8942,10 @@ static void SpriteCB_DragonEnergyShot(struct Sprite* sprite)
else else
{ {
y = 0; y = 0;
if (IsBattlerSpritePresent(def1)) if (IsBattlerSpritePresent(def1))
y = GetBattlerSpriteCoord(def1, BATTLER_COORD_Y_PIC_OFFSET); y = GetBattlerSpriteCoord(def1, BATTLER_COORD_Y_PIC_OFFSET);
if (IsBattlerSpritePresent(def2)) if (IsBattlerSpritePresent(def2))
y += GetBattlerSpriteCoord(def2, BATTLER_COORD_Y_PIC_OFFSET); y += GetBattlerSpriteCoord(def2, BATTLER_COORD_Y_PIC_OFFSET);
@ -9018,13 +9030,13 @@ static void SpriteCB_GlacialLance(struct Sprite* sprite)
{ {
u8 def1 = gBattleAnimTarget; u8 def1 = gBattleAnimTarget;
u8 def2 = BATTLE_PARTNER(def1); u8 def2 = BATTLE_PARTNER(def1);
InitSpritePosToAnimAttacker(sprite, TRUE); InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[5] = gBattleAnimArgs[4]; sprite->data[5] = gBattleAnimArgs[4];
sprite->data[6] = gBattleAnimArgs[5]; sprite->data[6] = gBattleAnimArgs[5];
sprite->data[0] = gBattleAnimArgs[6]; sprite->data[0] = gBattleAnimArgs[6];
if (!IsDoubleBattle() || IsAlly(gBattleAnimAttacker, gBattleAnimTarget)) if (!IsDoubleBattle() || IsAlly(gBattleAnimAttacker, gBattleAnimTarget))
{ {
sprite->data[2] = GetBattlerSpriteCoord(def1, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; //Converge on target sprite->data[2] = GetBattlerSpriteCoord(def1, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; //Converge on target