Пример #1
0
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);
        }

    }
Пример #2
0
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);    
    }