void sub_80D5DDC(u8 taskId) { struct Task *task = &gTasks[taskId]; task->data[12] = !GetBattlerSide(gAnimBankAttacker) ? 1 : -1; task->data[13] = IsAnimBankSpriteVisible(gAnimBankTarget ^ 2) + 1; task->data[14] = GetAnimBattlerSpriteId(1); task->data[15] = GetAnimBattlerSpriteId(3); task->func = sub_80D5E4C; }
void sub_80D08C8(u8 taskId) { struct Task* task = &gTasks[taskId]; u8 spriteId = GetAnimBattlerSpriteId(0); sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D7714); task->func = sub_80D0904; }
// player void sub_80D1EC8(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(0); if (++gTasks[taskId].data[0] == 1) { sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gSpriteAffineAnim_83D7A98); gSprites[spriteId].pos2.x = 4; } else { gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; if (sub_807992C(&gTasks[taskId]) == 0) { gSprites[spriteId].pos2.x = 0; gSprites[spriteId].pos2.y = 0; DestroyAnimVisualTask(taskId); } } }
void sub_80DD4D4(u8 taskId) { u16 var0, var1, var2, var3; u8 var4; int var5; s16 pan1, pan2; struct Task *task; task = &gTasks[taskId]; var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 24; var2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2); var3 = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 24; if ((gBattleAnimAttacker ^ 2) == gBattleAnimTarget) var3 = var1; var4 = sub_80DD8BC(); if (var4 == 1) task->data[8] = 32; else task->data[8] = 48 - (var4 * 8); task->data[0] = 0; task->data[11] = 0; task->data[9] = 0; task->data[12] = 1; var5 = task->data[8]; if (var5 < 0) var5 += 7; task->data[10] = (var5 >> 3) - 1; task->data[2] = var0 * 8; task->data[3] = var1 * 8; task->data[4] = ((var2 - var0) * 8) / task->data[8]; task->data[5] = ((var3 - var1) * 8) / task->data[8]; task->data[6] = 0; task->data[7] = 0; pan1 = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER_NEG); pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET); task->data[13] = pan1; task->data[14] = (pan2 - pan1) / task->data[8]; task->data[1] = var4; task->data[15] = GetAnimBattlerSpriteId(0); task->func = sub_80DD604; }
void sub_80CC474(struct Sprite* sprite) { u8 bank; if (!gBattleAnimArgs[6]) bank = gAnimBankAttacker; else bank = gAnimBankTarget; if (GetBattlerSide(bank) != 0) { sprite->data[4] = 0; sprite->data[2] = gBattleAnimArgs[3]; sprite->pos1.x = 0xFFF0; } else { sprite->data[4] = 1; sprite->data[2] = -gBattleAnimArgs[3]; sprite->pos1.x = 0x100; } sprite->data[1] = gBattleAnimArgs[1]; sprite->data[0] = gBattleAnimArgs[2]; sprite->data[3] = gBattleAnimArgs[4]; switch (gBattleAnimArgs[5]) { case 0: sprite->pos1.y = gBattleAnimArgs[0]; sprite->oam.priority = sub_8079ED4(bank); break; case 1: sprite->pos1.y = gBattleAnimArgs[0]; sprite->oam.priority = sub_8079ED4(bank) + 1; break; case 2: sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[0]; sprite->oam.priority = sub_8079ED4(bank); break; case 3: sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[0]; GetAnimBattlerSpriteId(1); sprite->oam.priority = sub_8079ED4(bank) + 1; break; } sprite->callback = sub_80CC580; }