#include "global.h" #include "rom_8077ABC.h" #include "trig.h" #include "battle_anim.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; 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 = GetBankPosition(gAnimBankAttacker, 2); sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 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(gAnimBankAttacker)) { 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) { DestroyAnimSprite(sprite); } }