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; }
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); }
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); }