Difference between revisions of "Ghost monster"

From DoomWiki.org

[checked revision][checked revision]
m
m
(6 intermediate revisions by 5 users not shown)
Line 1: Line 1:
: ''This article is about the bug in [[Doom II]]. For information about the Heretic monster type, see [[Ghosts (Heretic)]]''
+
{{gendisambigabout|the bug in [[Doom II]]|information about the Heretic monster type|Ghosts (Heretic)}}
 
 
 
A '''ghost monster''' is a monster with unusual ghost-like properties. This is caused by a rare [[engine bug|bug]] that occurs when the [[monster]]'s corpse becomes a small pool of gore by being crushed under a door or ceiling and is then resurrected by an [[arch-vile]]. The ghost monster looks normal and still behaves like before being killed, except that it retains some of the properties of the pool of gore it had become. When moving, these properties allow it to pass through walls to [[sector]]s that are equal to or lesser in height in respect to the one it occupies. As far as combat is concerned, the ghost monster can usually only be harmed by [[splash damage]], monster [[melee]] attacks, [[arch-vile]] attacks, and [[telefrag]]ging. Nonetheless, since its near-immunity to some attacks occurs because it cannot be aimed at, it is possible to harm it by hitting a specific, very narrow area at the base of its axis with a regular [[projectile]] attack, although this is very difficult to achieve.
 
A '''ghost monster''' is a monster with unusual ghost-like properties. This is caused by a rare [[engine bug|bug]] that occurs when the [[monster]]'s corpse becomes a small pool of gore by being crushed under a door or ceiling and is then resurrected by an [[arch-vile]]. The ghost monster looks normal and still behaves like before being killed, except that it retains some of the properties of the pool of gore it had become. When moving, these properties allow it to pass through walls to [[sector]]s that are equal to or lesser in height in respect to the one it occupies. As far as combat is concerned, the ghost monster can usually only be harmed by [[splash damage]], monster [[melee]] attacks, [[arch-vile]] attacks, and [[telefrag]]ging. Nonetheless, since its near-immunity to some attacks occurs because it cannot be aimed at, it is possible to harm it by hitting a specific, very narrow area at the base of its axis with a regular [[projectile]] attack, although this is very difficult to achieve.
  
Some [[PWAD]]s have used the ghost monster phenomenon as a feature, such as [[Dark Side of the Mind]], [[The Waterfront]], [[Requiem]]'s [[MAP23: Hatred (Requiem)|MAP23: Hatred]], [[Icarus: Alien Vanguard]]'s [[MAP24: The Haunting (Icarus: Alien Vanguard)|MAP24: The Haunting]], [[Hell Revealed]]'s [[MAP26: Afterlife (Hell Revealed)|MAP26: Afterlife]], [[Hell to Pay]]'s [[MAP14: The Habitat Deck (Hell To Pay)|MAP14: The Habitat Deck]] and [[MAP22: Vile Temple (Hell To Pay)|MAP22: Vile Temple]], and [[Plutonia 2]]'s [[MAP32: Go 4 It (Plutonia 2)|MAP32: Go 4 It]].
+
Some [[PWAD]]s have used the ghost monster phenomenon as a feature, such as [[Dark Side of the Mind]], [[The Waterfront]], [[Requiem]]'s [[MAP23: Hatred (Requiem)|MAP23: Hatred]], [[Icarus: Alien Vanguard]]'s [[MAP24: The Haunting (Icarus: Alien Vanguard)|MAP24: The Haunting]], [[Unholy Realms]]'s [[MAP06: Sewage Entrypoint (Unholy Realms)|MAP06: Sewage Entrypoint]], [[Hell Revealed]]'s [[MAP26: Afterlife (Hell Revealed)|MAP26: Afterlife]], [[Hell to Pay]]'s [[MAP14: The Habitat Deck (Hell To Pay)|MAP14: The Habitat Deck]] and [[MAP22: Vile Temple (Hell To Pay)|MAP22: Vile Temple]], and [[Plutonia 2]]'s [[MAP32: Go 4 It (Plutonia 2)|MAP32: Go 4 It]].
  
As with many [[Doom engine]] bugs, this one is fixed in some [[source port]]s; while [[Doomsday]] retains it fully, other ports, such as [[ZDoom]], automatically enable it for maps widely known to utilize the bug, namely the above examples, but otherwise prevents the bug from occuring.
+
As with many [[Doom engine]] bugs, this one is fixed in many [[source port]]s, including [[Boom]]; while [[Doomsday]] retains it fully, other ports, such as [[ZDoom]], automatically enable it for maps widely known to utilize the bug, namely the above examples, but otherwise prevents the bug from occurring. In [[MBF]], it depends on whether the {{c|comp_vile}} setting is enabled.
  
 
==Technical==
 
==Technical==
Line 17: Line 16:
 
</pre>
 
</pre>
  
The parameters are not restored upon resurrection, so all such pools of blood are potential ghosts ''if'' the original monster has a resurrection sequence (a set of sprite pointers usually containing the frames of the death of the monster in reverse). Most [[monsters]] have one, with the ones that cannot be resurrected by the [[arch-vile]] ([[lost soul]], [[cyberdemon]], [[spiderdemon]] and another arch-vile) being exceptions.
+
The parameters are not restored upon resurrection, so all such pools of blood are potential ghosts ''if'' the original monster has a resurrection sequence (a set of sprite pointers usually containing the frames of the death of the monster in reverse). Most [[monster]]s have one, with the ones that cannot be resurrected by the [[arch-vile]] ([[lost soul]], [[cyberdemon]], [[spiderdemon]] and another arch-vile) being exceptions.
  
 
==Notes==
 
==Notes==
Line 27: Line 26:
 
==All-ghosts effect==
 
==All-ghosts effect==
 
In extremely rare cases, a memory overflow can occur which causes all [[thing]]s, including [[player]]s and monsters, to become ghosts. In [[deathmatch]] play, this phenomenon is termed the ''DM no-clipping bug''. One such way to cause this is when a hitscan attack, or a BFG tracer crosses over more than 128 linedefs/things at once, causing an [[Static_limits#Intercepts | intercept overflow]]. Such an overflow can be produced, somewhat awkwardly but quite reliably, for example, by shooting a hitscan weapon over a large amount of corpses and pickups all lined-up in a row.
 
In extremely rare cases, a memory overflow can occur which causes all [[thing]]s, including [[player]]s and monsters, to become ghosts. In [[deathmatch]] play, this phenomenon is termed the ''DM no-clipping bug''. One such way to cause this is when a hitscan attack, or a BFG tracer crosses over more than 128 linedefs/things at once, causing an [[Static_limits#Intercepts | intercept overflow]]. Such an overflow can be produced, somewhat awkwardly but quite reliably, for example, by shooting a hitscan weapon over a large amount of corpses and pickups all lined-up in a row.
 +
 +
This bug can happen in all [[Doom engine]] games except [[Strife]], where a fix was implemented to stop progression of tracers when the intercepts array is full. In versions of Doom up to 1.2, and in Heretic and Hexen, it is also possible for line-of-sight checks to trigger the glitch, as a tracer-like algorithm is used for line-of-sight checking in those games which utilizes the same intercept array.
  
 
==See also==
 
==See also==
*[[Voodoo doll]]
+
* [[Voodoo doll]]
  
 
==External links==
 
==External links==
 
* [http://classicdoom.com/ghostfaq.htm Ghost-monster FAQ] by [[Ledmeister]]
 
* [http://classicdoom.com/ghostfaq.htm Ghost-monster FAQ] by [[Ledmeister]]
 
* [http://games.moria.org.uk/doom/research/ghosts A technical essay about the problem] by [[Colin "cph" Phipps]]
 
* [http://games.moria.org.uk/doom/research/ghosts A technical essay about the problem] by [[Colin "cph" Phipps]]
 +
* {{idgames|file=levels/doom2/Ports/g-i/intoverf|title=A map showcasing the "all-ghosts" bug|linkonly=1}} by [[TimeOfDeath]]
 +
 
[[Category:Doom engine]]
 
[[Category:Doom engine]]
 
[[Category:Errors and bugs]]
 
[[Category:Errors and bugs]]
 
[[Category:Monsters]]
 
[[Category:Monsters]]

Revision as of 08:11, 25 December 2019

This article is about the bug in Doom II. For information about the Heretic monster type, see Ghosts (Heretic).

A ghost monster is a monster with unusual ghost-like properties. This is caused by a rare bug that occurs when the monster's corpse becomes a small pool of gore by being crushed under a door or ceiling and is then resurrected by an arch-vile. The ghost monster looks normal and still behaves like before being killed, except that it retains some of the properties of the pool of gore it had become. When moving, these properties allow it to pass through walls to sectors that are equal to or lesser in height in respect to the one it occupies. As far as combat is concerned, the ghost monster can usually only be harmed by splash damage, monster melee attacks, arch-vile attacks, and telefragging. Nonetheless, since its near-immunity to some attacks occurs because it cannot be aimed at, it is possible to harm it by hitting a specific, very narrow area at the base of its axis with a regular projectile attack, although this is very difficult to achieve.

Some PWADs have used the ghost monster phenomenon as a feature, such as Dark Side of the Mind, The Waterfront, Requiem's MAP23: Hatred, Icarus: Alien Vanguard's MAP24: The Haunting, Unholy Realms's MAP06: Sewage Entrypoint, Hell Revealed's MAP26: Afterlife, Hell to Pay's MAP14: The Habitat Deck and MAP22: Vile Temple, and Plutonia 2's MAP32: Go 4 It.

As with many Doom engine bugs, this one is fixed in many source ports, including Boom; while Doomsday retains it fully, other ports, such as ZDoom, automatically enable it for maps widely known to utilize the bug, namely the above examples, but otherwise prevents the bug from occurring. In MBF, it depends on whether the comp_vile setting is enabled.

Technical

The following code creates small pools of gore:

P_SetMobjState (thing, S_GIBS);

thing->flags &= ~MF_SOLID;
thing->height = 0;
thing->radius = 0;

The parameters are not restored upon resurrection, so all such pools of blood are potential ghosts if the original monster has a resurrection sequence (a set of sprite pointers usually containing the frames of the death of the monster in reverse). Most monsters have one, with the ones that cannot be resurrected by the arch-vile (lost soul, cyberdemon, spiderdemon and another arch-vile) being exceptions.

Notes

  • The pain elemental specifically has a resurrection sequence, yet normally leaves no corpse to resurrect. If one is crushed to death or while dying, however, a pool of gore is generated. This means pain elementals can only be resurrected as ghosts.

Demo

All-ghosts effect

In extremely rare cases, a memory overflow can occur which causes all things, including players and monsters, to become ghosts. In deathmatch play, this phenomenon is termed the DM no-clipping bug. One such way to cause this is when a hitscan attack, or a BFG tracer crosses over more than 128 linedefs/things at once, causing an intercept overflow. Such an overflow can be produced, somewhat awkwardly but quite reliably, for example, by shooting a hitscan weapon over a large amount of corpses and pickups all lined-up in a row.

This bug can happen in all Doom engine games except Strife, where a fix was implemented to stop progression of tracers when the intercepts array is full. In versions of Doom up to 1.2, and in Heretic and Hexen, it is also possible for line-of-sight checks to trigger the glitch, as a tracer-like algorithm is used for line-of-sight checking in those games which utilizes the same intercept array.

See also

External links