#include "global.h" #include "rom_8077ABC.h" #include "trig.h" #include "battle_anim.h" extern s16 gBattleAnimArgs[]; extern u8 gBattleAnimBankAttacker; extern u8 gBattleAnimBankTarget; static void sub_80CAF20(struct Sprite* sprite); static void sub_80CAF6C(struct Sprite* sprite); // leaf // Used by Razor Leaf and Twister. void sub_80CAED8(struct Sprite* sprite) { sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); sprite->data[0] = gBattleAnimArgs[0]; sprite->data[1] = gBattleAnimArgs[1]; sprite->data[2] = gBattleAnimArgs[2]; sprite->callback = sub_80CAF20; } void sub_80CAF20(struct Sprite* sprite) { if (!sprite->data[2]) { if (sprite->data[1] & 1) { sprite->data[0] = 0x80; sprite->data[1] = 0; sprite->data[2] = 0; } else { sprite->data[0] = sprite->data[1] & 1; sprite->data[1] = sprite->data[1] & 1; sprite->data[2] = sprite->data[1] & 1; } sprite->callback = sub_80CAF6C; } else { sprite->data[2]--; sprite->pos1.x += sprite->data[0]; sprite->pos1.y += sprite->data[1]; } } void sub_80CAF6C(struct Sprite* sprite) { if (GetBankSide(gBattleAnimBankAttacker)) { sprite->pos2.x = -Sin(sprite->data[0], 0x19); } else { sprite->pos2.x = Sin(sprite->data[0], 0x19); } sprite->data[0] = (sprite->data[0] + 2) & 0xFF; sprite->data[1]++; if (!(sprite->data[1] & 1)) { sprite->pos2.y++; } if (sprite->data[1] > 0x50) { move_anim_8072740(sprite); } }