Multiple thinkers on a single door

From DoomWiki.org

Strife adds numerous new door linedef specials to support its plethora of keys and other access controls. In the function EV_VerticalDoor, there is a check which allows a door already in motion to be reversed by a subsequent activation. Reversing is only allowed to happen for certain types of doors:

  • 1: DR Door Open-Wait-Close
  • 26: DR Door Open-Wait-Close ID Card
  • 27: DR Door Open-Wait-Close Pass Card
  • 28: DR Door Open-Wait-Close ID Badge
  • 117: DR Door Open-Wait-Close Blazing
  • 159: DR Door Open-Wait-Close Gold Key
  • 160: DR Door Open-Wait-Close Silver Key
  • 161: DR Door Open-Wait-Close Brass Key
  • 166: DR Door Open-Wait-Close Hand Print
  • 169: DR Door Open-Wait-Close Base Key
  • 170: DR Door Open-Wait-Close Gov's Key
  • 190: DR Door Open-Wait-Close Order Key
  • 213: DR Door Open-Wait-Close Chalice
  • 232: DR Door Open-Wait-Close Oracle Pass

In particular this omits deliberately all "D1" doors, since they are meant to open or close only once, and apparently unintentionally omits several of Strife's locked door types for no obvious reason.

Unfortunately, the default case of the switch used to implement this test for busy sectors does not return from the EV_VerticalDoor function. It instead merely breaks from the switch and allows the function to continue executing. As a result, any door type not listed above is capable of starting redundant vertical door thinkers on sectors that are already in motion. The multiple thinkers running at once can lead to situations such as a door that is stuck open, stuck closed, or stuck midway in its motion - this occurs because the door is simultaneously moving both up and down at the same speed, rendering a resultant velocity of zero. This condition most easily occurs when two sides of the same door have different door specials.

When this error occurs inside a critical passage, it can become a game-breaking glitch, requiring use of a cheat or restarting the entire game to circumvent.

Door types which are allowed to start multiple thinkers on a sector because of this error include:

  • 31: D1 Open Door
  • 32: D1 Open Door ID Card
  • 33: D1 Open Door ID Badge
  • 34: D1 Open Door Pass Card
  • 118: D1 Open Door Blazing
  • 156: D1 Open Door Brass Key
  • 157: D1 Open Door Silver Key
  • 158: D1 Open Door Gold Key
  • 217: DR Door Open-Wait-Close Core Key
  • 221: DR Door Open-Wait-Close Mauler Key
  • 224: DR Door Open-Wait-Close Chapel Key
  • 225: DR Door Open-Wait-Close Catacomb Key