Fast doors reopening with wrong sound

Beginning with the Doom II engine, moving walls and ceilings (e.g. doors, lifts, rising stairs, crushers) may be either normal or "blazing": blazing sectors rise or fall much more rapidly than normal sectors.

A blazing door, like a normal door, cannot close if a player or monster is directly beneath it, but instead bounces off the object and reopens. One would then expect to hear the noise associated with a blazing door opening (DSBDOPN); instead, however, the normal door-opening sound (DSDOROPN) is played.

Technical
The cause for this bug can be found in p_doors.c in the thinker function T_VerticalDoor. This function controls the behavior of doors and performs their "animation". The following code detects when a closing door has hit an object and causes it to change direction:

else if (res == crushed) {       switch(door->type) {         case blazeClose: case close:              // DO NOT GO BACK UP! break; default: door->direction = 1; S_StartSound((mobj_t *)&door->sector->soundorg,                        sfx_doropn); break; }   }    break;

The call to S_StartSound causes the "door opening" sound to play when the door reopens. However, there is no test included to check the type of the door and play the correct sound. The normal door opening sound is therefore always played.

Demo files

 * [[Media:D204bdb2.lmp|The door reopening bug]] ([[Image:D204bdb2.lmp|file info]]) on MAP04: The Focus