Пример #1
0
int DoDeathSpecial(short SpriteNum)
{
    SPRITEp sp = &sprite[SpriteNum];
    USERp u = User[SpriteNum];
    static SWBOOL alreadydid = FALSE;

    DoMatchEverything(NULL, sp->lotag, ON);

    if (!SW_SHAREWARE && gs.MusicOn && !alreadydid)
    {
        PlaySong(0, RedBookSong[Level], TRUE, TRUE);
        alreadydid = TRUE;
    }

    BossSpriteNum[0] = -2;
    return 0;
}
Пример #2
0
int DoDeathSpecial(short SpriteNum)
{
    SPRITEp sp = &sprite[SpriteNum];
    USERp u = User[SpriteNum];
    static BOOL alreadydid = FALSE;
    
    DoMatchEverything(NULL, sp->lotag, ON);

    #ifndef SW_SHAREWARE
    if(gs.MusicOn && !alreadydid)
        {
        CDAudio_Stop();
        CDAudio_Play(RedBookSong[Level], TRUE);
        alreadydid = TRUE;
        }
    #endif

    BossSpriteNum[0] = -2;    
    return(0);
}    
Пример #3
0
int UserBreakSprite(short BreakSprite)
    {
    SPRITEp sp;
    SPRITEp bp = &sprite[BreakSprite];
    short match = bp->lotag;
    short match_extra;
    short SpriteNum;
    
    SpriteNum = FindBreakSpriteMatch(match);
    
    if (SpriteNum < 0)
        {
        // even if you didn't find a matching ST1 go ahead and kill it and match everything
        // its better than forcing everyone to have a ST1
        DoMatchEverything(NULL, match, -1);
        // Kill sound if one is attached
        DeleteNoSoundOwner(BreakSprite);
        //change_sprite_stat(BreakSprite, STAT_SUICIDE);
        KillBreakSprite(BreakSprite);
        return(TRUE);
        }
    
    sp = &sprite[SpriteNum];
    match_extra = SP_TAG6(bp);
    
    if (bp->picnum == SP_TAG5(sp))
        return(TRUE);
   
    // make it BROKEN
    if (SP_TAG7(sp) <= 1)
        {
        DoMatchEverything(NULL, match_extra, -1);
        //DoSpawnSpotsForKill(match_extra);
        DoLightingMatch(match_extra, OFF);
        
        if (SP_TAG8(sp) == 0)
            {
            bp->picnum = SP_TAG5(sp);
            RESET(bp->extra, SPRX_BREAKABLE);
            }
        else    
        // kill sprite
        if (SP_TAG8(sp) == 1)
            {
            // Kill sound if one is attached
            DeleteNoSoundOwner(BreakSprite);
            KillBreakSprite(BreakSprite);
            //KillSprite(BreakSprite);
            //change_sprite_stat(BreakSprite, STAT_SUICIDE);
            return(TRUE);
            }
        else
        if (SP_TAG8(sp) == 2)
        // leave it    
            {
            // set to broken pic
            bp->picnum = SP_TAG5(sp);
            
            // reset 
            if (SP_TAG8(sp) == 2)
                {
                RESET(bp->cstat, CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN);
                }
                
            RESET(bp->extra, SPRX_BREAKABLE);
            }    
        }
    else
        {
        // increment picnum
        bp->picnum++;
            
        DoSpawnSpotsForDamage(match_extra);
        }    
    
    return(FALSE);    
    }