Doom Wiki
mNo edit summary
Tag: Visual edit
(36 intermediate revisions by 22 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)]]''
+
: ''This article is about the bug in [[Doom II]]. For information about the [[Heretic]] monster type, see [[Ghosts (Heretic)]]''
   
'''Ghost monsters''' are caused by a rare bug that occurs when a [[monster]]'s corpse is crushed under a door or ceiling and then resurrected by an [[Arch-Vile]]. These ghosts behave like the monsters they formerly were, except that they can sometimes pass through walls and can usually only be harmed by [[splash damage]], monster [[melee]] attacks, [[arch-vile]] attacks, and [[telefrag]]ging. It is also possible to harm one by hitting a specific, very narrow area at the base of its axis with a regular [[projectile]] attack, though this is extremely difficult.
+
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.
   
This bug is fixed in nearly all [[source port]]s. However, some [[PWAD]]s have used the ghost monster phenomenon as a feature, such as [[Requiem]]'s [[MAP23: Hatred (Requiem)|MAP23: Hatred]] and [[Icarus: Alien Vanguard]]'s [[MAP24: The Haunting (Icarus: Alien Vanguard)|MAP24: The Haunting]]. [[Boom]] and its close derivatives can be set to allow or disallow the creation of ghost monsters according to the user's preference.
+
Some [[PWAD]]s have used the ghost monster phenomenon as a feature, such as [[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]], [[MAP15: Dead Zone (TNT: Evilution)]] and [[Plutonia 2]]'s [[MAP32: Go 4 It (Plutonia 2)|Map 32: Go 4 It]].
   
  +
As with many notable [[Doom engine]] bugs that have been taken advantage of by mappers, some source ports make varying degrees of effort to support it; [[Doomsday]] features a compatibility option that allows the user to enable/disable the bug occurring, while [[ZDoom]] automatically enables it for maps widely known to utilize the bug, namely the above examples (but it can't be toggled on/off by the user).
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''.
 
  +
  +
It is also possible in a ZDoom based source port to summon ghost monsters if playing E.g. [[Ultimate Doom]] when summoning a monster that isn't in that [[IWAD]]. In [[Hexen]] if you summon any [[Doom]] monster it will be a ghost monster with fully functional attacks but harder to dodge cause the missiles (in case of [[imp]]s, [[revenant]]s, [[cacodemon]]s, [[baron of hell|barons of hell]], [[hell knight]]s, [[mancubi]], [[arachnotron]]s and [[cyberdemon]]s) are virtually invisible.
   
 
==Technical==
 
==Technical==
The following code creates pools of blood:
+
The following code creates small pools of gore:
 
<pre>
 
<pre>
 
P_SetMobjState (thing, S_GIBS);
 
P_SetMobjState (thing, S_GIBS);
Line 17: Line 19:
 
</pre>
 
</pre>
   
The parameters are not restored upon resurrection, so all such pools of blood are potential ghosts ''if'' the original monster has a respawn sequence (a set of sprite pointers usually containing the frames of the death of the monster in reverse). Most [[monsters]] have one, with the [[Lost Soul]], [[Arch-Vile]], [[Cyberdemon]], and [[Spider Mastermind]] 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 [[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 resurrected Ghost Monster has no height value, making it "infinitely tall". The monster is no longer restricted by obstacles with a height value, which is most walls or platforms except the level boundries. The monster can now instantly walk up to the top level of these obstacles. In other words, if an obstacle has a ceiling that can be walked on, the monster can instantly "jump" up to that surface if it walks into the base of the obstacle, as if with a "no-clip" cheat code.
 
  +
* 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==
The reason the monster can only be damaged by splash damage from explosions is because the radius of its "tangible area" is 0, so only a one-dimensional vertical line in the center of the monster can regester damage. It is virtually impossible to shoot this line with regular projectiles. Splash damage, on the other hand, only needs to overlap the line to damage it.
 
  +
* [[Media:RESRPAIN.WAD|A level demonstrating how a pain elemental can be resurrected, despite normally never leaving a body behind when it dies, as a ghost monster]] ([[:File:RESRPAIN.WAD|file info]]). Step on button 1 to activate the [[crushing ceiling|crusher]] and wait for the pain elemental to die, and then step on button 2 to stop the crusher when it is near the ceiling. After that, step on button 3 to release the arch-vile and see the effect in action.
   
  +
==All-ghosts effect==
==Notes==
 
 
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, including [[BFG]] tracers, crosses over more than 128 linedefs/things at once.
 
The [[Pain Elemental]] specifically has a respawn sequence, and yet in most cases leaves no corpse. The last part of the death animation points to frame 0 (blank) so there is nothing to resurrect, unless they are crushed, which means they are ''only'' resurrectable as ghosts.
 
   
 
==See also==
 
==See also==
Line 33: Line 36:
 
* [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]]
 
 
[[Category:Doom engine]]
 
[[Category:Doom engine]]
 
[[Category:Errors and bugs]]
 
[[Category:Errors and bugs]]
[[Category:Monsters]]
 

Revision as of 04:33, 12 August 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 The Waterfront, Requiem's MAP23: Hatred, Icarus: Alien Vanguard's MAP24: The Haunting, Hell Revealed's MAP26: Afterlife, Hell to Pay's MAP14: The Habitat Deck and MAP22: Vile Temple, MAP15: Dead Zone (TNT: Evilution) and Plutonia 2's Map 32: Go 4 It.

As with many notable Doom engine bugs that have been taken advantage of by mappers, some source ports make varying degrees of effort to support it; Doomsday features a compatibility option that allows the user to enable/disable the bug occurring, while ZDoom automatically enables it for maps widely known to utilize the bug, namely the above examples (but it can't be toggled on/off by the user).

It is also possible in a ZDoom based source port to summon ghost monsters if playing E.g. Ultimate Doom when summoning a monster that isn't in that IWAD. In Hexen if you summon any Doom monster it will be a ghost monster with fully functional attacks but harder to dodge cause the missiles (in case of imps, revenants, cacodemons, barons of hell, hell knights, mancubi, arachnotrons and cyberdemons) are virtually invisible.

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, including BFG tracers, crosses over more than 128 linedefs/things at once.

See also

External links