Projectiles explode on impact with "sky"


Projectiles in Doom are designed to explode when encountering an obstacle, including certain things as well as walls, floors and ceilings, but they are meant to disappear without exploding if they are aimed toward the sky. Due to a bug, projectiles will sometimes explode against the sky instead.


There are two ways in which a projectile can "reach" the sky: The most common way is for the projectile to be fired horizontally toward the top of a linedef in a sector that uses the sky texture for a ceiling. In this case, the projectile is removed without exploding as seen below.

From P_XYMovement in p_mobj.c:

  // explode a missile
  if (ceilingline &&
      ceilingline->backsector &&
      ceilingline->backsector->ceilingpic == skyflatnum)
      // Hack to prevent missiles exploding
      // against the sky.
      // Does not handle sky floors.
      P_RemoveMobj (mo);
  P_ExplodeMissile (mo);

When a projectile crosses the top of linedef ceilingline, indicating that the projectile is crossing out of the sector toward the "sky," the projectile will be removed.

Less frequently, a projectile will directly hit the ceiling that uses a sky texture, rather than a linedef. This will happen when an attack is aimed at a fast-moving target with a different height than the source, such as a monster running along a ledge above the player. In this situation, when aimed properly, the player's rocket will move up toward the monster, but if the monster moves out of the way the rocket will continue until it strikes something else.

Because there is no logic in the game that checks if a projectile is directly hitting a "sky" ceiling, the rocket will explode rather than be removed.

See also[edit]