Monsters can move from one place to another so long as:
There are three new rules for flying monsters:
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.