Final Doom teleporters do not set Z coordinate


This bug emulated using Chocolate Doom in Doom II MAP23: Barrels o' Fun.

A problem introduced in the Final Doom version of the Doom engine, the Z coordinate of the player is not adjusted to the teleport destination altitude. This can cause the player to be teleported in the air or in the ground. When a monster is teleported, it is spawned on the floor but the teleporter fog remains at the height of origin teleporter.

This bug was admitted by TeamTNT[1], and it was fixed in the executable included in the rarer variant of id Anthology with Final Doom, on which the release is based.

It was due to a line being removed from the function EV_Teleport which teleports things. The line still has the comment fixme: not needed? in the Linux Doom source code release.

   oldx = thing->x;
   oldy = thing->y;
   oldz = thing->z;
   if (!P_TeleportMove (thing, m->x, m->y))
       return 0;
   thing->z = thing->floorz;  //fixme: not needed?
   if (thing->player)
       thing->player->viewz = thing->z+thing->player->viewheight;


  1. TeamTNT. "Bugs and Fixes." TeamTNT (archived 🏛). Retrieved 11 January 2022.