From e7f8186ccc3829b5d36480431fc757f8d586686e Mon Sep 17 00:00:00 2001 From: PALPATlNE Date: Fri, 8 Feb 2019 03:13:36 +0100 Subject: [PATCH 1/3] Mud bomb and Shadow Sneak Animations --- data/battle_anim_scripts.s | 73 +++++++++++++++++++++++++++++++++++-- src/ground.c | 74 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+), 2 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index ce79175a47..bae8e94769 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -134,7 +134,7 @@ gBattleAnims_Moves:: .4byte Move_FOCUS_ENERGY .4byte Move_BIDE .4byte Move_METRONOME - .4byte Move_MIRROR_MOVE @ doesn't have an actual animation + .4byte Move_MIRROR_MOVE @ doesn´t have an actual animation .4byte Move_SELF_DESTRUCT .4byte Move_EGG_BOMB .4byte Move_LICK @@ -1885,11 +1885,80 @@ Move_FIRE_FANG: end Move_SHADOW_SNEAK: + loadspritegfx ANIM_TAG_LICK + setalpha 0, 16 + delay 1 + createvisualtask sub_81143C0, 2 + delay 1 + createvisualtask sub_8113BAC, 5 + playsewithpan SE_W060, SOUND_PAN_ATTACKER + delay 48 + playsewithpan SE_W060B, SOUND_PAN_ATTACKER + waitforvisualfinish + createvisualtask sub_8114470, 2 + setalpha 0, 16 + delay 1 + playsewithpan SE_W122, SOUND_PAN_TARGET + createsprite gUnknown_08596D8C, ANIM_TARGET, 2, 0, 0 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 16, 1 + waitforvisualfinish + clearmonbg_23 ANIM_TARGET + delay 1 + blendoff + delay 1 end Move_MUD_BOMB: + loadspritegfx ANIM_TAG_MUD_SAND + playsewithpan SE_W145C, SOUND_PAN_ATTACKER + createsprite gMudBombToss, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 + delay 5 + playsewithpan SE_W145C, SOUND_PAN_ATTACKER + createsprite gMudBombToss, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 + delay 5 + playsewithpan SE_W145C, SOUND_PAN_ATTACKER + createsprite gMudBombToss, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 + delay 5 + playsewithpan SE_W145C, SOUND_PAN_ATTACKER + createsprite gMudBombToss, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 + delay 11 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 + createsprite gMudBombSplash, ANIM_TARGET, 2, 42, 27, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, 42, 27, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -27, 44, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, 39, -28, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -42, -42, 20 + playsewithpan SE_W233B, SOUND_PAN_TARGET + delay 5 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 + createsprite gMudBombSplash, ANIM_TARGET, 2, 0, 40, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -8, -44, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -46, -28, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, 46, 9, 20 + playsewithpan SE_W088, SOUND_PAN_TARGET + delay 5 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 + createsprite gMudBombSplash, ANIM_TARGET, 2, 42, 0, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -43, -12, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, 16, -46, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -16, 44, 20 + playsewithpan SE_W088, SOUND_PAN_TARGET + delay 5 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 + createsprite gMudBombSplash, ANIM_TARGET, 2, 0, 40, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -8, -44, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -46, -28, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, 46, 9, 20 + playsewithpan SE_W088, SOUND_PAN_TARGET + delay 5 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 + createsprite gMudBombSplash, ANIM_TARGET, 2, 42, 0, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -43, -12, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, 16, -46, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -16, 44, 20 + waitforvisualfinish end - + Move_PSYCHO_CUT: end diff --git a/src/ground.c b/src/ground.c index ae3cf6c3e0..35224672ca 100644 --- a/src/ground.c +++ b/src/ground.c @@ -12,10 +12,14 @@ void AnimDirtScatter(struct Sprite *); void AnimMudSportDirt(struct Sprite *); void AnimFissureDirtPlumeParticle(struct Sprite *); void AnimDigDirtMound(struct Sprite *); +void MudBombParticles(struct Sprite *); +void MudBombBall(struct Sprite *); static void AnimBonemerangProjectileStep(struct Sprite *); static void AnimBonemerangProjectileEnd(struct Sprite *); static void AnimMudSportDirtRising(struct Sprite *); static void AnimMudSportDirtFalling(struct Sprite *); +static void MudBombParticles_Callback(struct Sprite *); +static void MudBombBall_Callback(struct Sprite *); static void sub_8114CFC(u8); static void sub_8114EB4(u8); static void sub_8114F54(u8); @@ -27,6 +31,7 @@ static void sub_81154A4(u8); static void sub_8115588(struct Task *); static void sub_81156D0(u8); + const union AffineAnimCmd gUnknown_08597150[] = { AFFINEANIMCMD_FRAME(0x0, 0x0, 15, 1), @@ -137,6 +142,28 @@ const struct SpriteTemplate gUnknown_08597214 = .callback = AnimDigDirtMound, }; +const struct SpriteTemplate gMudBombSplash = +{ + .tileTag = ANIM_TAG_MUD_SAND, + .paletteTag = ANIM_TAG_MUD_SAND, + .oam = &gUnknown_08524904, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = MudBombParticles, +}; + +const struct SpriteTemplate gMudBombToss = +{ + .tileTag = ANIM_TAG_MUD_SAND , + .paletteTag = ANIM_TAG_MUD_SAND, + .oam = &gUnknown_0852490C, + .anims = gUnknown_085971C8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = MudBombBall, +}; + // Moves a bone projectile towards the target mon, which moves like // a boomerang. After hitting the target mon, it comes back to the user. void AnimBonemerangProjectile(struct Sprite *sprite) @@ -557,6 +584,53 @@ void AnimDigDirtMound(struct Sprite *sprite) sprite->callback = WaitAnimForDuration; } +//Lifted from sludge bomb +void MudBombParticles(struct Sprite *sprite) +{ + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1]; + + InitSpriteDataForLinearTranslation(sprite); + + sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2]; + sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2]; + + sprite->callback = MudBombParticles_Callback; +} +//also lifted from sludge bomb +static void MudBombParticles_Callback(struct Sprite *sprite) +{ + TranslateSpriteLinearFixedPoint(sprite); + + sprite->data[1] -= sprite->data[5]; + sprite->data[2] -= sprite->data[6]; + + if (!sprite->data[0]) + DestroyAnimSprite(sprite); +} +//lifted from smokescreen +void MudBombBall(struct Sprite *sprite) +{ + InitSpritePosToAnimAttacker(sprite, 1); + if (GetBattlerSide(gBattleAnimAttacker)) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; + sprite->data[5] = gBattleAnimArgs[5]; + InitAnimArcTranslation(sprite); + + sprite->callback = MudBombBall_Callback; +} +//Also lifted form smokescreen +static void MudBombBall_Callback(struct Sprite *sprite) +{ + if (TranslateAnimHorizontalArc(sprite)) + DestroyAnimSprite(sprite); +} void sub_81152DC(u8 taskId) { u16 i; From 136f767f1f3b004a7b88ccd11167942da67d9bdd Mon Sep 17 00:00:00 2001 From: PALPATlNE Date: Sun, 10 Feb 2019 19:30:00 +0100 Subject: [PATCH 2/3] Replaced tab spaces with 4 spaces --- data/battle_anim_scripts.s | 144 ++++++++++++++++++------------------- 1 file changed, 72 insertions(+), 72 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index bae8e94769..d7b25b4dfa 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1885,79 +1885,79 @@ Move_FIRE_FANG: end Move_SHADOW_SNEAK: - loadspritegfx ANIM_TAG_LICK - setalpha 0, 16 - delay 1 - createvisualtask sub_81143C0, 2 - delay 1 - createvisualtask sub_8113BAC, 5 - playsewithpan SE_W060, SOUND_PAN_ATTACKER - delay 48 - playsewithpan SE_W060B, SOUND_PAN_ATTACKER - waitforvisualfinish - createvisualtask sub_8114470, 2 - setalpha 0, 16 - delay 1 - playsewithpan SE_W122, SOUND_PAN_TARGET - createsprite gUnknown_08596D8C, ANIM_TARGET, 2, 0, 0 - createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 16, 1 - waitforvisualfinish - clearmonbg_23 ANIM_TARGET - delay 1 - blendoff - delay 1 - end - + loadspritegfx ANIM_TAG_LICK + setalpha 0, 16 + delay 1 + createvisualtask sub_81143C0, 2 + delay 1 + createvisualtask sub_8113BAC, 5 + playsewithpan SE_W060, SOUND_PAN_ATTACKER + delay 48 + playsewithpan SE_W060B, SOUND_PAN_ATTACKER + waitforvisualfinish + createvisualtask sub_8114470, 2 + setalpha 0, 16 + delay 1 + playsewithpan SE_W122, SOUND_PAN_TARGET + createsprite gUnknown_08596D8C, ANIM_TARGET, 2, 0, 0 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 16, 1 + waitforvisualfinish + clearmonbg_23 ANIM_TARGET + delay 1 + blendoff + delay 1 + end + Move_MUD_BOMB: - loadspritegfx ANIM_TAG_MUD_SAND - playsewithpan SE_W145C, SOUND_PAN_ATTACKER - createsprite gMudBombToss, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 - delay 5 - playsewithpan SE_W145C, SOUND_PAN_ATTACKER - createsprite gMudBombToss, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 - delay 5 - playsewithpan SE_W145C, SOUND_PAN_ATTACKER - createsprite gMudBombToss, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 - delay 5 - playsewithpan SE_W145C, SOUND_PAN_ATTACKER - createsprite gMudBombToss, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 - delay 11 - createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 - createsprite gMudBombSplash, ANIM_TARGET, 2, 42, 27, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, 42, 27, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, -27, 44, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, 39, -28, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, -42, -42, 20 - playsewithpan SE_W233B, SOUND_PAN_TARGET - delay 5 - createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 - createsprite gMudBombSplash, ANIM_TARGET, 2, 0, 40, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, -8, -44, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, -46, -28, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, 46, 9, 20 - playsewithpan SE_W088, SOUND_PAN_TARGET - delay 5 - createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 - createsprite gMudBombSplash, ANIM_TARGET, 2, 42, 0, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, -43, -12, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, 16, -46, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, -16, 44, 20 - playsewithpan SE_W088, SOUND_PAN_TARGET - delay 5 - createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 - createsprite gMudBombSplash, ANIM_TARGET, 2, 0, 40, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, -8, -44, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, -46, -28, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, 46, 9, 20 - playsewithpan SE_W088, SOUND_PAN_TARGET - delay 5 - createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 - createsprite gMudBombSplash, ANIM_TARGET, 2, 42, 0, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, -43, -12, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, 16, -46, 20 - createsprite gMudBombSplash, ANIM_TARGET, 2, -16, 44, 20 - waitforvisualfinish - end + loadspritegfx ANIM_TAG_MUD_SAND + playsewithpan SE_W145C, SOUND_PAN_ATTACKER + createsprite gMudBombToss, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 + delay 5 + playsewithpan SE_W145C, SOUND_PAN_ATTACKER + createsprite gMudBombToss, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 + delay 5 + playsewithpan SE_W145C, SOUND_PAN_ATTACKER + createsprite gMudBombToss, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 + delay 5 + playsewithpan SE_W145C, SOUND_PAN_ATTACKER + createsprite gMudBombToss, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 + delay 11 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 + createsprite gMudBombSplash, ANIM_TARGET, 2, 42, 27, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, 42, 27, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -27, 44, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, 39, -28, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -42, -42, 20 + playsewithpan SE_W233B, SOUND_PAN_TARGET + delay 5 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 + createsprite gMudBombSplash, ANIM_TARGET, 2, 0, 40, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -8, -44, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -46, -28, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, 46, 9, 20 + playsewithpan SE_W088, SOUND_PAN_TARGET + delay 5 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 + createsprite gMudBombSplash, ANIM_TARGET, 2, 42, 0, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -43, -12, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, 16, -46, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -16, 44, 20 + playsewithpan SE_W088, SOUND_PAN_TARGET + delay 5 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 + createsprite gMudBombSplash, ANIM_TARGET, 2, 0, 40, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -8, -44, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -46, -28, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, 46, 9, 20 + playsewithpan SE_W088, SOUND_PAN_TARGET + delay 5 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 + createsprite gMudBombSplash, ANIM_TARGET, 2, 42, 0, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -43, -12, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, 16, -46, 20 + createsprite gMudBombSplash, ANIM_TARGET, 2, -16, 44, 20 + waitforvisualfinish + end Move_PSYCHO_CUT: end From 6c717078c65f0f131bdecbae8b916503ab7cb641 Mon Sep 17 00:00:00 2001 From: PALPATlNE Date: Mon, 11 Feb 2019 03:54:54 +0100 Subject: [PATCH 3/3] Fixed tab to 4 spaces in ground.c --- src/ground.c | 78 ++++++++++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/src/ground.c b/src/ground.c index 35224672ca..79d44eaa08 100644 --- a/src/ground.c +++ b/src/ground.c @@ -144,24 +144,24 @@ const struct SpriteTemplate gUnknown_08597214 = const struct SpriteTemplate gMudBombSplash = { - .tileTag = ANIM_TAG_MUD_SAND, - .paletteTag = ANIM_TAG_MUD_SAND, - .oam = &gUnknown_08524904, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = MudBombParticles, + .tileTag = ANIM_TAG_MUD_SAND, + .paletteTag = ANIM_TAG_MUD_SAND, + .oam = &gUnknown_08524904, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = MudBombParticles, }; const struct SpriteTemplate gMudBombToss = { - .tileTag = ANIM_TAG_MUD_SAND , - .paletteTag = ANIM_TAG_MUD_SAND, - .oam = &gUnknown_0852490C, - .anims = gUnknown_085971C8, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = MudBombBall, + .tileTag = ANIM_TAG_MUD_SAND , + .paletteTag = ANIM_TAG_MUD_SAND, + .oam = &gUnknown_0852490C, + .anims = gUnknown_085971C8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = MudBombBall, }; // Moves a bone projectile towards the target mon, which moves like @@ -587,49 +587,49 @@ void AnimDigDirtMound(struct Sprite *sprite) //Lifted from sludge bomb void MudBombParticles(struct Sprite *sprite) { - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0]; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1]; - InitSpriteDataForLinearTranslation(sprite); + InitSpriteDataForLinearTranslation(sprite); - sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2]; - sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2]; + sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2]; + sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2]; - sprite->callback = MudBombParticles_Callback; + sprite->callback = MudBombParticles_Callback; } //also lifted from sludge bomb static void MudBombParticles_Callback(struct Sprite *sprite) { - TranslateSpriteLinearFixedPoint(sprite); + TranslateSpriteLinearFixedPoint(sprite); - sprite->data[1] -= sprite->data[5]; - sprite->data[2] -= sprite->data[6]; + sprite->data[1] -= sprite->data[5]; + sprite->data[2] -= sprite->data[6]; - if (!sprite->data[0]) - DestroyAnimSprite(sprite); + if (!sprite->data[0]) + DestroyAnimSprite(sprite); } //lifted from smokescreen void MudBombBall(struct Sprite *sprite) { - InitSpritePosToAnimAttacker(sprite, 1); - if (GetBattlerSide(gBattleAnimAttacker)) - gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; - sprite->data[5] = gBattleAnimArgs[5]; - InitAnimArcTranslation(sprite); + InitSpritePosToAnimAttacker(sprite, 1); + if (GetBattlerSide(gBattleAnimAttacker)) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; + sprite->data[5] = gBattleAnimArgs[5]; + InitAnimArcTranslation(sprite); - sprite->callback = MudBombBall_Callback; + sprite->callback = MudBombBall_Callback; } //Also lifted form smokescreen static void MudBombBall_Callback(struct Sprite *sprite) { - if (TranslateAnimHorizontalArc(sprite)) - DestroyAnimSprite(sprite); + if (TranslateAnimHorizontalArc(sprite)) + DestroyAnimSprite(sprite); } void sub_81152DC(u8 taskId) {