void CON_KillSprite( void ) { char base[80]; SHORT op1=0; SPRITEp sp; short i; USERp u; // Format: kill [SpriteNum] if (sscanf(MessageInputString,"%s %hd",base,&op1) < 2) { strcpy(MessageInputString,"help kill"); CON_GetHelp(); return; } if(op1 == -1) { for(i=0; i<MAXSPRITES; i++) { u = User[i]; if(!u->PlayerP) SetSuicide(i); } CON_ConMessage("Killed all sprites except Players."); } else { if(!CheckValidSprite(op1)) return; SetSuicide(op1); CON_ConMessage("Killed sprite %d.",op1); } }
int KillBreakSprite(short BreakSprite) { SPRITEp bp = &sprite[BreakSprite]; USERp bu = User[BreakSprite]; short i; // Does not actually kill the sprite so it will be valid for the rest // of the loop traversal. // IMPORTANT: Do not change the statnum if possible so that NEXTI in // SpriteControl loop traversals will maintain integrity. SpriteQueueDelete(BreakSprite); if (bu) { if (bp->statnum == STAT_DEFAULT) // special case allow kill of sprites on STAT_DEFAULT list // a few things have users and are not StateControlled KillSprite(BreakSprite); else SetSuicide(BreakSprite); } else { change_sprite_stat(BreakSprite, STAT_SUICIDE); } return(0); }