Пример #1
0
/*
===============
trigger_buildable_trigger
===============
*/
void trigger_buildable_trigger( gentity_t *self, gentity_t *activator )
{
    self->activator = activator;

    if( self->s.eFlags & EF_NODRAW )
        return;

    if( self->nextthink )
        return;   // can't retrigger until the wait is over

    if( self->s.eFlags & EF_DEAD )
    {
        if( !trigger_buildable_match( self, activator ) )
            G_UseTargets( self, activator );
    }
    else
    {
        if( trigger_buildable_match( self, activator ) )
            G_UseTargets( self, activator );
    }

    if( self->wait > 0 )
    {
        self->think = multi_wait;
        self->nextthink = level.time + ( self->wait + self->random * crandom( ) ) * 1000;
    }
    else
    {
        // we can't just remove (self) here, because this is a touch function
        // called while looping through area links...
        self->touch = 0;
        self->nextthink = level.time + FRAMETIME;
        self->think = G_FreeEntity;
    }
}
Пример #2
0
/*
===============
trigger_buildable_trigger
===============
*/
void trigger_buildable_trigger(gentity_t *self, gentity_t *activator)
{
    self->activator = activator;

    if (self->s.eFlags & EF_NODRAW)
        return;

    if (self->nextthink)
        return;  // can't retrigger until the wait is over

    if (self->s.eFlags & EF_DEAD)
    {
        if (!trigger_buildable_match(self, activator))
        {
            G_UseTargets(self, activator);
            trigger_check_wait(self);
        }
    }
    else
    {
        if (trigger_buildable_match(self, activator))
        {
            G_UseTargets(self, activator);
            trigger_check_wait(self);
        }
    }
}