To understand the flight system in DOOM we need to first look at the regular movement system. For living monsters the system works with these rules (not in any particular order).

Monsters can move from one place to another so long as:

  1. the monster is not blocked by a wall or other impassable object (including other monsters)
  2. floor elevation reductions do not exceed 24 units between any two adjoining sectors
  3. floor elevation increases do not exceed 24 units between any two adjoining sectors
  4. the difference in height between the floor and ceiling must be >= to the monsters height
    (Stairs complicate this, as the clearance must be between the highest floor segment and the lowest ceiling segment the monster can be occupy at the same time)
  5. there needs to be sufficient width of floor (or stair) for the monster to navigate
    (Scott Ampoker's DOOM Metrics has a section dedicated to this and it's a bit more complicated than I want to cover).
  6. the space between walls and other impassable objects must exceed the monsters width by at least 1 "unit"
The flight system allows Cacodemons, Pain Elementals and Lost Souls to ignore movement rules 2, 3 and 5.

There are three new rules for flying monsters:

  1. a flying monster can only fly as high as the highest floor it has been on
  2. a flying monster can only gain new altitude (rise higher than its starting altitude) by "climbing up" from a lower floor level to a higher one
  3. a flying monster can only change elevation as fast as its movement base
Okay, I'm going to have to resort to illustrations to make these clear.

In figure 1 we have a large room with three occupants: Cacodemon "A", located on the floor of the room; Cacodemon "B" located in an alcove about ½-way up one wall; and Player "C" (that's you, Kenny) located on a pillar in the middle of the room. For this illustration these are the starting points for the two Cacodemon.

Since Cacodemon "A" is starting out on the floor, it can not just fly at you in a diagonal line; it must first fly to the base of your tower and then "climb up" the side of the tower (blue line) to reach you. (Think of it as it is stepping up a huge stair). Once at the level of the summit it can then fly aground the room at any altitude <= that height.

Cacodemon "B" is starting out in that alcove about ½-way up the wall. In order for it to reach you it must fly to the side of the tower and "climb up" the side just like Cacodemon "A" (red line). The difference here is that since the floor of the alcove is at a higher elevation than the floor of the main room Cacodemon "B" can fly around the room at any altitude <= to the floor of the alcove before if climbs the side of the tower.


Now we consider figure 2. In this room the two-sided sidedefs that make up the pillar are set with the "monsters can not cross" attribute (black lines). This causes an interesting effect. Because neither Cacodemon can cross the lines separating the lower floor of the main room with the raised floor of the pillar they can not "climb up" it. Cacodemon "A" is trapped on the floor (blue line). Cacodemon "B" can fly about at any altitude <= to the floor altitude of the alcove it started out in. but no higher (red line).


What about monsters that had teleported?

Okay, let's say that Cacodemon "A" did not start in the position indicated in either figure 1 or figure 2, but instead started in a small room with a floor altitude higher than the ceiling in this room, and then teleported from its starting point to where it is in the illustrations. Since the altitude of Cacodemon "A"'s original starting point was higher than the ceiling of the room in figures 1 and 2 it can fly at any altitude it wants within that room, regardless of the no-crossing linedefs in figure 2. If, however Cacodemon "A" had started out in a room below this one and teleported up to this room, it would have the exact same restrictions as if had started out on the floor like the illustrations indicate.

What about Lost Souls? I see them fly all over the damned place, regardless of what altitude they started at!

Valid question, and where's what's going on with Lost Souls. Lost souls have two flight modes.

The first is just like the mode that Cacodemons and Pain Elementals use. When in this mode Lost Souls only have a movement of 1.

The second flight mode is exactly the same as a rocket or fireball; it will fly in a straight line at any angle and at high speed until it hits something. Think if it this way; when a Lost Soul attacks you it is essentially launching itself at you just like an Imp would toss a fireball at you.