summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/battle_anim_scripts.s10
-rw-r--r--src/battle/battle_anim_80A7E7C.c31
2 files changed, 25 insertions, 16 deletions
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 6448f94a4..322157c0a 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -759,7 +759,7 @@ Move_TAKE_DOWN: @ 81C80E6
monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
playsewithpan SE_W036, 192
- createvisualtask sub_80A8920, 5, 0, -24, 8, 23, 10, 40, 10
+ createvisualtask AnimTask_WindUpLunge, 5, ANIM_BANK_ATTACKER, -24, 8, 23, 10, 40, 10
delay 35
createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 0, 10, 0, 0
createsprite gBasicHitSplatSpriteTemplate, 4, -10, 0, 1, 0
@@ -1300,7 +1300,7 @@ Move_SPIKE_CANNON: @ 81C8DF1
monbg ANIM_BANK_TARGET
monbgprio_28 1
setalpha 12, 8
- createvisualtask sub_80A8920, 5, 0, -4, 0, 4, 6, 8, 4
+ createvisualtask AnimTask_WindUpLunge, 5, ANIM_BANK_ATTACKER, -4, 0, 4, 6, 8, 4
waitforvisualfinish
loopsewithpan SE_W013B, 192, 5, 3
createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 5
@@ -3710,7 +3710,7 @@ _81CC4A7:
createsprite gBattleAnimSpriteTemplate_83D9FA8, 2, 18, 18, 10, 1, 0
playsewithpan SE_W233, 63
delay 20
- createvisualtask sub_80A8920, 2, 0, -24, 0, 24, 10, 24, 3
+ createvisualtask AnimTask_WindUpLunge, 2, ANIM_BANK_ATTACKER, -24, 0, 24, 10, 24, 3
createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 6, 0
delay 37
createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1
@@ -3738,7 +3738,7 @@ _81CC576:
createsprite gBattleAnimSpriteTemplate_83D9FA8, 2, 18, 18, 10, 1, 0
playsewithpan SE_W233, 63
delay 20
- createvisualtask sub_80A8920, 2, 0, -24, 0, 24, 10, 24, 3
+ createvisualtask AnimTask_WindUpLunge, 2, ANIM_BANK_ATTACKER, -24, 0, 24, 10, 24, 3
createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 6, 0
delay 37
createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1
@@ -9175,7 +9175,7 @@ _81D4974:
Move_SNATCH: @ 81D498B
playsewithpan SE_W036, 192
- createvisualtask sub_80A8920, 5, 0, -12, 4, 10, 10, 12, 6
+ createvisualtask AnimTask_WindUpLunge, 5, ANIM_BANK_ATTACKER, -12, 4, 10, 10, 12, 6
end
Move_DIVE: @ 81D49A5
diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c
index f339a1206..f4b899eba 100644
--- a/src/battle/battle_anim_80A7E7C.c
+++ b/src/battle/battle_anim_80A7E7C.c
@@ -30,8 +30,8 @@ static void SlideMonToOriginalPosStep(struct Sprite *sprite);
static void SlideMonToOffset(struct Sprite *sprite);
static void sub_80A8818(struct Sprite *sprite);
static void sub_80A88F0(struct Sprite *sprite);
-static void sub_80A89B4(u8 taskId);
-static void sub_80A8A18(u8 taskId);
+static void AnimTask_WindUpLungePart1(u8 taskId);
+static void AnimTask_WindUpLungePart2(u8 taskId);
static void AnimTask_SwayMonStep(u8 taskId);
static void sub_80A8D8C(u8 taskId);
static void sub_80A8FD8(u8 taskId);
@@ -646,11 +646,20 @@ static void sub_80A88F0(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
-void sub_80A8920(u8 taskId)
+// Task to facilitate a two-part translation animation, in which the sprite
+// is first translated in an arc to one position. Then, it "lunges" to a target
+// x offset. Used in TAKE_DOWN, for example.
+// arg 0: anim bank
+// arg 1: horizontal speed (subpixel)
+// arg 2: wave amplitude
+// arg 3: first duration
+// arg 4: delay before starting lunge
+// arg 5: target x offset for lunge
+// arg 6: lunge duration
+void AnimTask_WindUpLunge(u8 taskId)
{
- s16 r7;
- r7 = 0x8000 / gBattleAnimArgs[3];
- if (GetBankSide(gAnimBankAttacker))
+ s16 wavePeriod = 0x8000 / gBattleAnimArgs[3];
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
gBattleAnimArgs[5] = -gBattleAnimArgs[5];
@@ -662,11 +671,11 @@ void sub_80A8920(u8 taskId)
TASK.data[4] = gBattleAnimArgs[4];
TASK.data[5] = (gBattleAnimArgs[5] << 8) / gBattleAnimArgs[6];
TASK.data[6] = gBattleAnimArgs[6];
- TASK.data[7] = r7;
- TASK.func = sub_80A89B4;
+ TASK.data[7] = wavePeriod;
+ TASK.func = AnimTask_WindUpLungePart1;
}
-static void sub_80A89B4(u8 taskId)
+static void AnimTask_WindUpLungePart1(u8 taskId)
{
u8 spriteId;
spriteId = TASK.data[0];
@@ -676,11 +685,11 @@ static void sub_80A89B4(u8 taskId)
TASK.data[10] += TASK.data[7];
if (--TASK.data[3] == 0)
{
- TASK.func = sub_80A8A18;
+ TASK.func = AnimTask_WindUpLungePart2;
}
}
-static void sub_80A8A18(u8 taskId)
+static void AnimTask_WindUpLungePart2(u8 taskId)
{
u8 spriteId;
if (TASK.data[4] > 0)