Index: src/game/g_mover.c =================================================================== --- src/game/g_mover.c (revision 1760) +++ src/game/g_mover.c (working copy) @@ -1145,44 +1145,6 @@ void Blocked_Door( gentity_t *ent, gentity_t *othe /* ================ -Touch_DoorTriggerSpectator -================ -*/ -static void Touch_DoorTriggerSpectator( gentity_t *ent, gentity_t *other, trace_t *trace ) -{ - int i, axis; - vec3_t origin, dir, angles; - - axis = ent->count; - VectorClear( dir ); - - if( fabs( other->s.origin[ axis ] - ent->r.absmax[ axis ] ) < - fabs( other->s.origin[ axis ] - ent->r.absmin[ axis ] ) ) - { - origin[ axis ] = ent->r.absmin[ axis ] - 20; - dir[ axis ] = -1; - } - else - { - origin[ axis ] = ent->r.absmax[ axis ] + 20; - dir[ axis ] = 1; - } - - for( i = 0; i < 3; i++ ) - { - if( i == axis ) - continue; - - origin[ i ] = ( ent->r.absmin[ i ] + ent->r.absmax[ i ] ) * 0.5; - } - - vectoangles( dir, angles ); - TeleportPlayer( other, origin, angles ); -} - - -/* -================ manualDoorTriggerSpectator This effectively creates a temporary door auto trigger so manually @@ -1229,8 +1191,6 @@ static void manualDoorTriggerSpectator( gentity_t VectorCopy( mins, triggerHull.r.absmin ); VectorCopy( maxs, triggerHull.r.absmax ); triggerHull.count = best; - - Touch_DoorTriggerSpectator( &triggerHull, player, NULL ); } /* @@ -1303,16 +1263,8 @@ void Touch_DoorTrigger( gentity_t *ent, gentity_t if( other->s.eType == ET_BUILDABLE ) return; - if( other->client && other->client->sess.spectatorState != SPECTATOR_NOT ) - { - // if the door is not open and not opening - if( ent->parent->moverState != MOVER_1TO2 && - ent->parent->moverState != MOVER_POS2 && - ent->parent->moverState != ROTATOR_1TO2 && - ent->parent->moverState != ROTATOR_POS2 ) - Touch_DoorTriggerSpectator( ent, other, trace ); - } - else if( ent->parent->moverState != MOVER_1TO2 && + if( !( other->client && other->client->sess.spectatorState != SPECTATOR_NOT ) && + ent->parent->moverState != MOVER_1TO2 && ent->parent->moverState != ROTATOR_1TO2 && ent->parent->moverState != ROTATOR_2TO1 ) { @@ -1473,6 +1425,8 @@ void SP_func_door( gentity_t *ent ) else ent->think = Think_SpawnNewDoorTrigger; } + + ent->r.contents &= ~MASK_DEADSOLID; // allow spectators to move through doors } /*QUAKED func_door_rotating (0 .5 .8) START_OPEN CRUSHER REVERSE TOGGLE X_AXIS Y_AXIS