The MAPINFO lump

ZDoom supports a special MAPINFO lump that can be used to define special characteristics for the different maps in a wad. This lump contains two types of entries: map definitions and cluster definitions which are indicated by the keywords "map" and "clusterdef" respectively. Everything following one of these keywords up until the next "map" or "clusterdef" is considered to be part of the definition for a specific map or cluster.

Map definitions

A map definition begins with the word "map". You can also specify standard characteristics for later map definitons by using the word "defaultmap" instead (and leaving <maplump> and <nice name> blank):

map <maplump> <nice name>
defaultmap
Substitute the name of the map in the wad for <maplump>, and the map's nice name (shown in the automap) for <nice name>. If <nice name> contains spaces, it must be enclosed in quotation marks ("). <Maplump> can be *any* lump in the wad, but since most editing utilities will only recognize maps of the form MAP?? or E?M?, you should probably stick to those if you want to be able to edit the levels easily.
After the map (or defaultmap) line, the following properties can be specified:
levelnum <levelnum>
This is the map's identification number that is used to identify it to the Teleport_NewMap special. If the map's name is of the form MAPxx, then it will automatically have a levelnum of xx unless you specify differently. (i.e. MAP23's levelnum will be 23 unless you set it to something else.)
next <maplump>
<maplump> is the name of the map to move to when the normal exit (Exit_Normal special) is used. This is also the map to travel to when the timelimit or fraglimit is hit in a deathmatch game. This should be the name of the map in the wad and not the map's nice name.
secretnext <maplump>
<maplump> is the name of the map to move to when the secret exit is used. This should be the name of the map in the wad and not the map's nice name.

Next and secretnext also accept the special EndGame? names that indicate that ZDoom should end the game instead of continuing to another level. These are:
EndGameCThe cast finale for Doom II
EndGame1Displays the picture used after episode 1
EndGame2Displays the picture used after episode 2
EndGame3The bunny scroller after episode 3
EndGame4Displays the picture used after episode 4
Note that using these will not display any text. To do that, use an "exittext" for this level's cluster. (See clusterdef below.)

cluster <number>
<number> is the cluster that this map belongs to. See cluster definitions below for more details.
doublesky
Specifies that both sky textures are drawn, with sky1 in front of sky2. Sky2 will show through wherever sky1 is color 0 (*not* cyan).
sky1 <texture> <scrollspeed>
<texture> is the name of the texture to use for the sky. <scrollspeed> is the rate at which the sky moves left or right (useful for clouds on windy maps). To keep the sky from moving, use a value of 0.0; to move it left, use a positive value; and to move it right, use a negative value. This is the number of steps that the sky moves each tic.
sky2 <texture> <scrollspeed>
Used the same as sky1, except it selects the properties for the background sky layer (if doublesky is used) or an alternate sky image that can be shown in selected sectors.
fade <color>
<color> is the color that things fade to the further away or "darker" they are. Normally, this is black, so that things seem darker as they get further away. To simulate fog (ala Hexen), set this to a gray instead. Other colors are also supported, but may not necessarily look very good. <color> can be either the name of a color (such as red or cyan) or a color descriptor of the form "RR GG BB". For example, to set the fade to red, both of the following will work:
fade red
fade "ff 00 00"
To find a good fade within the game, you can use the testfade console command.
outsidefog <color>
This is like fade except that the <color> fade is only applied to sectors with a sky ceiling and not all sectors on the map.
titlepatch <patch>
This is the name of a graphic to display on the intermission screen for this level (such as CWILV00). It should contain the name of the level. If this is omitted, the intermission screen will create a graphic for.
par <partime>
Partime is the number of seconds shown as the level's par in the intermission screen.
music <musiclump>
<musiclump> is the name of the song to play while the player is playing the level.
nointermission
This indicates that when the current level is finished, ZDoom should continue immediately to the next level without showing the intermission screen.
nosoundclipping
This indicates that sounds should not be clipped on the current level no matter how far away they are. I can't say that it's terribly useful, but it is the behavior Doom used on maps E1M8, E2M8, E3M8, and E4M8.
allowmonstertelefrags
This indicates that monsters can telefrag each other or the player on the level. Normally, monsters will never telefrag anything.
map07special
This level wants the special feature of Doom II MAP07. In this case, when every mancubus on the level dies, any sectors tagged 666 will have their floors lower to the next lowest floor, and when every arachnotron on the level is dead, any sectors tagged 667 will have their floors raised by the height of their lower textures.
baronspecial
After every Baron of Hell on this level has died, a special action will be triggered.
cyberdemonspecial
After every Cyber Demon on this level has died, a special action will be triggered.
spidermastermindspecial
After every Spider Mastermind on this level has died, a special action will be triggered.
The above three specials should also be used with one of the following
three special actions:
specialaction_exitlevel
Exits the level after all of the specified monsters have died.
specialaction_opendoor
After all of the specified monsters have died, opens any doors tagged 666 with blazing speed.
specialaction_lowerfloor
After all of the specified monsters have died, lowers the floors of all sectors tagged 666 to the next lowest floor.
lightning
Not implemented. Sorry.
fadetable <colormap>
Included for Hexen compatibility. Please don't use it. Right now, it does what it's supposed to (specify a default colormap to use instead of the regular COLORMAP lump), but in the future it will probably just act like a fadeto line.
evenlighting
Specifies that lighting should be applied to walls evenly no matter what their orientation. DOOM would use different light levels for walls that were vertical, horizontal, or diagonal (when viewed from above). While this gives better definition to corners, it looks dumb if you have a rotating polyobject because the polyobject's lighting will vary as it rotates. You can disable that behavior by specifying this.
forcenoskystretch
If you have a sky graphic that looks fine whether it tiles or not, you can use this, and the sky will never be stretched on this level, regardless of the value of r_stretchsky.
noautosequences
By default, the sound sequence played in a sector when it moves is determined by the special used to activate it. If you specify this, whatever sound sequence has ID 0 will be used by default instead. In either case, placing a sound sequence thing (1400-1409) in a sector will cause the sound assigned to that thing to be played.

Cluster definitions

A cluster definition begins with the word "clusterdef". For purposes of ZDoom, clusters are used to displays messages when moving between maps and to optionally group different levels into a hub.
clusterdef <cluster>
<Cluster> is the cluster that this clusterdef defines. A cluster of 0 is used internally to mean "no cluster" and should be avoided.
After clusterdef, the following properties are valid:
entertext <message>
<message> is a message to be displayed when the player has just finished a level in another cluster and is entering a level in this cluster.
exittext <message>
<message> is a message to be displayed when the player has just finished a level in a different cluster from the next one. If the next level's cluster has an entertext defined, then it will be shown instead of this cluster's exittext.
music <musiclump>
This is the music to play while either the entertext or exittext of this cluster is displayed. For Doom I, this is normally D_VICTOR, and for Doom II, this is normally D_READ_M.
flat <flatlump>
This is the name of the flat to use as a background while this cluster's entertext or exittext is displayed.
hub
Indicates that this cluster is a hub. When leaving a hub, the game will remember the contents of the level when the player left it and restore the level to that state when the player returns to it. Moving to a different cluster will cause the game to forget the state of the levels in this hub in order to save memory. Each level a player visits in a hub uses memory (about 20k for a typical level), so it's probably a good idea not to have too many levels in a single hub. Just how many is "too many" is arbitrary. Unless you use very large levels, you could probably use 50 levels in a hub, and only about 1 meg would be required to keep track of the state of each level.