示例#1
0
文件: sfx.c 项目: PikalaxALT/pokeruby
// used in 3 moves:
//         Move_HOWL, Move_ROAR, Move_GROWL
void sub_812B18C(u8 taskId)
{
    u16 species = 0;
    s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER_NEG);

    if (IsContest())
    {
        if (!gBattleAnimArgs[0])
            species = shared19348.unk0;
        else
            DestroyAnimVisualTask(taskId);
    }
    else
    {
        u8 bank;
        if (gBattleAnimArgs[0] == 0)
            bank = gBattleAnimAttacker;
        else if (gBattleAnimArgs[0] == 1)
            bank = gBattleAnimTarget;
        else if (gBattleAnimArgs[0] == 2)
            bank = gBattleAnimAttacker ^ 0x2;
        else
            bank = gBattleAnimTarget ^ 0x2;

        if (gBattleAnimArgs[0] == 1 || gBattleAnimArgs[0] == 3)
        {
            if (!IsAnimBankSpriteVisible(bank))
            {
                DestroyAnimVisualTask(taskId);
                return;
            }
        }

        if (GetBattlerSide(bank))
            species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], 0xB);
        else
            species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], 0xB);
    }

    if (species != 0)
    {
        s16 mode = gBattleAnimArgs[1];
        if (mode == 0xFF)
            PlayCry1(species, pan);
        else
            PlayCry3(species, pan, mode);
    }

    DestroyAnimVisualTask(taskId);
}
void WallyHandleFaintingCry(void)
{
    PlayCry1(GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES), 25);
    WallyBufferExecCompleted();
}