diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 1101172a2..1287aa99d 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -5606,12 +5606,22 @@ static void Got_Cheat(UINT8 **cp, INT32 playernum) if (!P_MobjWasRemoved(player->mo)) { - player->mo->flags ^= MF_NOCLIP; + UINT32 noclipFlags = MF_NOCLIP; - if (!(player->mo->flags & MF_NOCLIP)) + if (player->spectator) { + noclipFlags |= MF_NOCLIPHEIGHT; + } + + if (player->mo->flags & MF_NOCLIP) + { + player->mo->flags &= ~(noclipFlags); status = "off"; } + else + { + player->mo->flags |= noclipFlags; + } } CV_CheaterWarning(targetPlayer, va("noclip %s", status));