@@ -403,15 +403,17 @@ void SpectatorThink( gentity_t *ent, usercmd_t *ucmd ) {
403403 else
404404 client -> ps .pm_type = PM_LIMITEDSPECTATOR ;
405405 // RR2DO2
406- client -> ps .speed = 440 ; //keeg recon speed
406+ client -> ps .speed = 800 ; //keeg recon speed -- ensi: faster yet
407+
408+ if (client -> noclip && client -> ps .pm_type != PM_LIMITEDSPECTATOR )
409+ client -> ps .pm_type = PM_NOCLIP ;
407410
408411 // set up for pmove
409412 memset (& pm , 0 , sizeof (pm ));
410413 pm .ps = & client -> ps ;
411414 pm .cmd = * ucmd ;
412415 pm .tracemask = MASK_PLAYERSOLID & ~CONTENTS_BODY ; // spectators can fly through bodies
413416 pm .trace = trap_TraceNoEnts ;
414- // pm.trace = trap_Trace;
415417 pm .pointcontents = trap_PointContents ;
416418
417419 // Golliwog: Prevent firing during ceasefire
@@ -1162,16 +1164,24 @@ void ClientThink_real( gentity_t *ent ) {
11621164 pm .cmd = * ucmd ;
11631165
11641166 pm .trace = G_Q3F_ForceFieldTrace ;
1165- if ( pm .ps -> pm_type == PM_DEAD ) {
1167+ switch ( pm .ps -> pm_type ) {
1168+ case PM_DEAD :
11661169 pm .tracemask = MASK_PLAYERSOLID & ~CONTENTS_BODY ;
11671170 // DHM-Nerve added:: EF_DEAD is checked for in Pmove functions, but wasn't being set
11681171 // until after Pmove
11691172 pm .ps -> eFlags |= EF_DEAD ;
11701173 // dhm-Nerve end
1171- } else if ( pm .ps -> pm_type == PM_SPECTATOR || pm .ps -> pm_type == PM_ADMINSPECTATOR ) {
1174+ break ;
1175+ case PM_SPECTATOR :
1176+ case PM_ADMINSPECTATOR :
11721177 pm .trace = trap_TraceNoEnts ;
1173- } else {
1178+ break ;
1179+ case PM_NOCLIP :
1180+ pm .tracemask = MASK_PLAYERSOLID & ~CONTENTS_BODY ;
1181+ break ;
1182+ default :
11741183 pm .tracemask = MASK_PLAYERSOLID ;
1184+ break ;
11751185 }
11761186
11771187 pm .pointcontents = trap_PointContents ;
0 commit comments