Index: src/game/g_buildable.c =================================================================== --- src/game/g_buildable.c (revision 948) +++ src/game/g_buildable.c (working copy) @@ -472,6 +472,9 @@ { enemy = &g_entities[ entityList[ i ] ]; + if( enemy->flags & FL_NOTARGET ) + continue; + if( enemy->client && enemy->client->ps.stats[ STAT_PTEAM ] == PTE_HUMANS && enemy->client->ps.groundEntityNum != ENTITYNUM_NONE && G_Visible( self, enemy ) ) @@ -744,6 +747,9 @@ { enemy = &g_entities[ entityList[ i ] ]; + if( enemy->flags & FL_NOTARGET ) + continue; + if( enemy->client && enemy->client->ps.stats[ STAT_PTEAM ] == PTE_HUMANS ) { self->timestamp = level.time; @@ -1003,6 +1009,9 @@ { enemy = &g_entities[ entityList[ i ] ]; + if( enemy->flags & FL_NOTARGET ) + continue; + if( !G_Visible( self, enemy ) ) continue; @@ -1071,6 +1080,9 @@ { enemy = &g_entities[ entityList[ i ] ]; + if( enemy->flags & FL_NOTARGET ) + continue; + if( enemy->health <= 0 ) continue; @@ -1358,6 +1370,9 @@ { gclient_t *client = other->client; + if( other->flags & FL_NOTARGET ) + return; // notarget cancels even beneficial effects? + if( !self->spawned ) return; @@ -1461,6 +1476,8 @@ return qfalse; if( !target->client ) // is the target a bot or player? return qfalse; + if( target->flags & FL_NOTARGET ) // is the target cheating? + return qfalse; if( target->client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS ) // one of us? return qfalse; if( target->client->sess.sessionTeam == TEAM_SPECTATOR ) // is the target alive? @@ -1650,6 +1667,9 @@ { enemy = &g_entities[ entityList[ i ] ]; + if( enemy->flags & FL_NOTARGET ) + continue; + if( enemy->client && enemy->client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS ) { self->timestamp = level.time; @@ -1810,6 +1830,9 @@ { player = &g_entities[ entityList[ i ] ]; + if( player->flags & FL_NOTARGET ) + continue; // notarget cancels even beneficial effects? + if( player->client && player->client->ps.stats[ STAT_PTEAM ] == PTE_HUMANS ) { if( player->health < player->client->ps.stats[ STAT_MAX_HEALTH ] && @@ -1961,6 +1984,9 @@ if( !target ) return qfalse; + if( target->flags & FL_NOTARGET ) + return qfalse; + if( !target->client ) return qfalse; @@ -2160,6 +2186,9 @@ { enemy = &g_entities[ entityList[ i ] ]; + if( enemy->flags & FL_NOTARGET ) + continue; + if( enemy->client && enemy->client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS && enemy->health > 0 && Distance( enemy->s.pos.trBase, self->s.pos.trBase ) <= TESLAGEN_RANGE ) Index: src/game/g_missile.c =================================================================== --- src/game/g_missile.c (revision 948) +++ src/game/g_missile.c (working copy) @@ -588,10 +588,10 @@ trap_Trace( &tr, self->r.currentOrigin, self->r.mins, self->r.maxs, self->target_ent->r.currentOrigin, self->r.ownerNum, self->clipmask ); - //if there is no LOS or the parent hive is too far away or the target is dead, return + //if there is no LOS or the parent hive is too far away or the target is dead or notargeting, return if( tr.entityNum == ENTITYNUM_WORLD || Distance( self->r.currentOrigin, self->parent->r.currentOrigin ) > ( HIVE_RANGE * 5 ) || - self->target_ent->health <= 0 ) + self->target_ent->health <= 0 || self->target_ent->flags & FL_NOTARGET ) { self->r.ownerNum = ENTITYNUM_WORLD;