diff options
-rw-r--r-- | data/battle_anim_scripts.s | 10 | ||||
-rw-r--r-- | src/battle/battle_anim_80A7E7C.c | 31 |
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) |