EMAPINFO: Difference between revisions

From Eternity Wiki
Jump to navigationJump to search
No edit summary
(24 intermediate revisions by 5 users not shown)
Line 14: Line 14:


==MapInfo Variables==
==MapInfo Variables==
'''acsscript'''
===Level identification===
:Name of the lump containing the compiled ACS script for this map.
====creator====
          acsscript = SCRIPT01
:The level author's name, which can be viewed in the console using the "creator" console command. If this value is not provided, the default value is "unknown". For example:
      creator = Edwin Chadwick 'chadders'
 
====edf-intername====
:Boolean value which, if true, enables the use of [[EDF]]-defined intermission map name strings which will be drawn using the FONTB graphics (provided in eternity.wad for DOOM/DOOM II, and natively supported by Heretic). This feature is meant to obsolete the levelpic variable and to remove the need for authors to create title graphics for their maps in DOOM/DOOM II. It also allows intermission map name replacement to work correctly for the next level and for Heretic without any hacks.
The EDF string which will be used as the intermission name for the current map should have the mnemonic _IN_NAME_<mapname>, where <mapname> is the exact name of the map's header lump (Example: _IN_NAME_MAP01).
In order for the name of the next map to display correctly, the current level must either define its nextlevel/nextsecret values explicitly, or it must be an ExMy or MAPxy level. For example:
      edf-intername = true
 
====inter-levelname====
:Name of the map to display in the intermission score screen. This is separate from '''levelname''' which is for the automap display, and can be used as an alternative to '''levelpic''' which is a graphic lump for the intermission name. If both '''inter-levelname''' and '''levelpic''' are present, '''levelpic''' takes precedence. Unlike '''levelpic''', this one also works in Heretic. For example:
      inter-levelname = Circle of death


'''altskyname'''
====interpic====
:Name of a texture to display instead of the normal sky texture during a lightning strike. This value is only used if lightning is enabled for this level. If this value is not provided, no sky animation will occur during lightning strikes. For example:
:Name of a 320x200 graphic lump to be displayed as the background of the statistics intermission. For example:
altskyname = LBOLTSKY
interpic = BOSSBACK


'''boss-specials'''
====killstats====
:A flags field that specifies what formerly level-specific boss "magic codepointer" actions are enabled for this level. This field takes a value in the same format as that used by [[EDF]], DeHackEd/BEX, and ExtraData flag fields, but the format will be reviewed here for completeness.
:Boolean value that allows the statistics intermission between two maps to be disabled. If the map has a finale sequence to be displayed, it will start immediately, otherwise the next map will be loaded. For example:
      killstats = true


A BEX flag list is a string of flag names separated by whitespace, pipe characters, commas, or plus characters. Flags are combined using bitwise-OR logic, so a flag name can be specified more than once. Specifying a flag name causes that flag to be turned on. The default state of all flags is off.
====levelname====
:This is the name of the level which will be displayed in the automap. This value overrides any string provided via DeHackEd. If you want to change the level name displayed in the intermission, change '''levelpic''' or '''inter-levelname'''. '''Levelname''' example:
      levelname = chadders' lair


These are the flag values which are available for this field:
====levelpic====
          Flag name  Decimal  Hex    Meaning
:This is the name of a graphic lump which will be shown as the level name during the statistics intermission when this map is the previous map which was just beaten. This value is only used for DOOM and DOOM II maps. You can also use '''inter-levelname''' to set the intermission display level name, which will use the necessary font, already included in Eternity. '''Levelpic''' example:
          -----------------------------------------------------------------
       levelpic = E1M1PIC
          MAP07_1    1        0x0001  MAP07 Special 1 (BossDeath only)
          MAP07_2    2        0x0002  MAP07 Special 2 (BossDeath only)
          E1M8       4        0x0004  E1M8 Special
          E2M8      8        0x0008  E2M8 Special
          E3M8      16      0x0010  E3M8 Special
          E4M6      32      0x0020  E4M6 Special (BossDeath only)
          E4M8      64      0x0040  E4M8 Special
          E5M8      128      0x0080  E5M8 Special (HticBossDeath Only)
          -----------------------------------------------------------------


Notes: Actions differ depending on whether monsters use the BossDeath or HticBossDeath codepointers. See the documentation for those specific codepointers to see what actions they perform. The monsters which must be dead for a given special to activate are controlled by various [[EDF]]/BEX thingtype flags. Together, these features allow complete customization.
====levelpicnext====
:The level pic to show for the next level, only when taking the normal exit. If omitted, it will try that level's '''levelpic''' or write the name of it using the font.


Example flags fields -- All of these are equivalent:
====levelpicsecret====
          boss-specials = MAP07_1|MAP07_2
:Same as '''levelpicnext''', but for taking the secret exit instead.
          boss-specials = MAP07_1 | MAP07_2
         
          boss-specials = MAP07_1+MAP07_2
          boss-specials = MAP07_2 + MAP07_2
         
          boss-specials = MAP07_1,MAP07_2
          boss-specials = MAP07_1, MAP07_2
         
          boss-specials = MAP07_1 MAP07_2


'''colormap'''
====nextlevel====
:Name of a colormap lump to use as the global colormap for this level. This colormap is applied to any sectors which do not have their own colormaps specified either via use of 242 height transfer linedefs or scripting. This lump must be between C_START and C_END tags. For example:
:The exact header name of the next level to go to when a normal exit occurs on this map. This can specify *any* lump name, but the lump should be a valid level header or an error will occur. For example:
       colormap = FOGMAP
       nextlevel = CHAD2


'''creator'''
====nextsecret====
:The level author's name, which can be viewed in the console using the "creator" console command. If this value is not provided, the default value is "unknown". For example:
:The exact header name of the next level to go to when a secret exit occurs on this map. This can specify *any* lump name, but the lump should be a valid level header or an error will occur. Note that except for maps which normally have secret exits, the default behavior is to repeat the same level. This MapInfo value allows you to avoid that and use a secret exit on any map. For example:
       creator = Edwin Chadwick 'chadders'
       nextsecret = MAP34


'''doublesky'''
====partime====
:Boolean value that determines whether or not this map uses double skies. When double skies are enabled, any F_SKY1 or F_SKY2 sectors *not* affected by MBF sky transfer lines will use both the primary and secondary sky textures together. The secondary texture will be drawn first, normally, then the primary texture will be drawn over it, omitting any pixels which use palette index zero (this is usually pure black). Any MapInfo sky delta values provided will be applied to their respective textures. For example:
:Partime for the map in seconds. This value overrides any value provided via DeHackEd. Note that partimes are only supported in episodes 1-3 of DOOM and any map of DOOM II. Ultimate DOOM episode 4, Heretic, and non-standard maps currently never display par times. For example:
       doublesky = true
       partime = 200


'''edf-intername'''
===Scripting===
:Boolean value which, if true, enables the use of [[EDF]]-defined intermission map name strings which will be drawn using the FONTB graphics (provided in eternity.wad for DOOM/DOOM II, and natively supported by Heretic). This feature is meant to obsolete the levelpic variable and to remove the need for authors to create title graphics for their maps in DOOM/DOOM II. It also allows intermission map name replacement to work correctly for the next level and for Heretic without any hacks.
====acsopendelay====
The EDF string which will be used as the intermission name for the current map should have the mnemonic _IN_NAME_<mapname>, where <mapname> is the exact name of the map's header lump (Example: _IN_NAME_MAP01).
:Boolean value that determines whether or not scripts' execution within the first 35 tics after entering the map is delayed until 35 tics have passed. '''(since 16th Feb 2016)'''
In order for the name of the next map to display correctly, the current level must either define its nextlevel/nextsecret values explicitly, or it must be an ExMy or MAPxy level. For example:
          acsopendelay = true
      edf-intername = true


'''endofgame'''
====acsscript====
:Boolean value which, if true, causes a DOOM II cast call to occur when this map is exited. This value is currently only usable in DOOM II. A level must also have intermission text defined for a cast call to take place. For example:
:Name of the lump containing the compiled ACS script for this map.
      endofgame = true
          acsscript = SCRIPT01


'''extradata'''
====extradata====
:Name of the ExtraData script lump for this map. See the ExtraData Reference for full information on ExtraData. There are no naming restrictions on ExtraData script lumps. For example:
:Name of the ExtraData script lump for this map. See the ExtraData Reference for full information on ExtraData. There are no naming restrictions on ExtraData script lumps. For example:
       extradata = EXTRDT01
       extradata = EXTRDT01


'''finale-secret'''
====levelscript====
:Boolean value which, if true, indicates that a text intermission should only occur after this map if a secret exit was taken. If no intermission text is defined for this map, this variable has no effect. For example:
:Name of a compiled {{Deprecated}} Small script lump which will serve as the Levelscript for this map. NOTE: use '''acsscript''' for compiled ACS scripts.
      finale-secret = true
 
===Physics===
====aircontrol====
:How much control the player has when attempting to move while in mid-air. By default Doom and Heretic have it 0 (no control whatsoever) and Hexen and Strife have a tiny value, just enough to allow jumping on objects.
:Default value is 0. Keep in mind you can set the '''comp_aircontrol''' property in the [[OPTIONS]] lump to "yes" or "no", which if enabled, will produce the Hexen effect. Maximum air control is 65536, so anything between 0 and 65536 is equivalent to air control between 0 and 100%.


'''finaletype'''
====airfriction====
:Specifies which finale image sequence to use. Possible values are:
:This is an optional field, useful if '''aircontrol''' is significant, in order to limit player's speed when moving in mid-air. ''Non-player objects, such as projectiles, are not affected by this''. Default value is 0 (no friction, like in the original games), and the maximum is 65536 (no acceleration whatsoever). In order to feel realistic, if it's needed, make sure to keep '''airfriction''' very low, or lower than the ground friction anyway, as it ''only'' applies while you're above ground.
:*''text''
:*''doom_credits''
:*''doom_deimos''
:*''doom_bunny''
:*''doom_marine''
:*''htic_credits''
:*''htic_water''
:*''htic_demon''


'''fullbright'''
====disable-jump====
:Boolean value that determines whether fullbright can be used on this level. When fullbright is disabled, player gun flashes will not occur, and fullbright sprites and particles will be drawn normally. This should be used with most custom colormaps, since flashes and fullbright sprites usually look incorrect with them. For example:
:If set to '''true''', it will disable player jumping in current level. Default is '''false'''.
       fullbright = false
       disable-jump = true


'''gravity'''
====gravity====
:Global gravity factor for the current level. The default gravity value is 65536. For example:
:Global gravity factor for the current level. The default gravity value is 65536. For example:
           # Enable 50% gravity
           # Enable 50% gravity
           gravity = 32768
           gravity = 32768


'''inter-backdrop'''
===Ambience===
:Name of a 64x64 flat OR a 320x200 graphic lump to be displayed as the background of a text intermission which occurs after this map. The flat namespace will be searched first, so if both a flat and a 320x200 picture of the same name exist, the flat will be chosen. For example:
====altskyname====
      inter-backdrop = FLATHUH1
:Name of a texture to display instead of the normal sky texture during a lightning strike. This value is only used if lightning is enabled for this level. If this value is not provided, no sky animation will occur during lightning strikes. For example:
altskyname = LBOLTSKY


'''intermusic'''
====colormap====
:Name of a MUS or MIDI lump to use as music during a text intermission which occurs after this map. If no intertext is defined for the map, this value will not be used. In DOOM gamemodes, the string provided should be the lump name minus the "D_" prefix. In Heretic, the string provided should be the lump name minus the "MUS_" prefix. You are *not* limited to using only the built-in music lump names; Eternity automatically adds any new lump which matches the naming convention for the current gamemode to the internal music list. For example:
:Name of a colormap lump to use as the global colormap for this level. This colormap is applied to any sectors which do not have their own colormaps specified either via use of 242 height transfer linedefs or scripting. This lump must be between C_START and C_END tags. For example:
       intermusic = ROMERO
       colormap = FOGMAP


'''interpic'''
====defaultenvironment====
:Name of a 320x200 graphic lump to be displayed as the background of the statistics intermission. This value is currently only used for DOOM II and Ultimate DOOM episode 4 maps. For example:
:Sets the default sound environment (reverb) effect to happen in the map. Use two identifiers, as defined in [[EDF]].
interpic = BOSSBACK
      defaultenvironment = 1 2


'''intertext'''
====doublesky====
:Lump name of a text lump to be loaded as intermission text for this level. If the level has an intermission by default, this will replace the default intermission text, even if it has been edited via DeHackEd. If there is not normally a text intermission after this map, the presence of this variable serves to enable it. If no intertext is defined, a text intermission will not occur after a map. The formatting of the text inside the indicated lump will be preserved exactly, with the exception of tabs, which are converted to spaces. There is no length limitation, but only one screen of text can be displayed. Any extra text will be drawn off the bottom of the screen. For example:
:Boolean value that determines whether or not this map uses double skies. When double skies are enabled, any F_SKY1 or F_SKY2 sectors *not* affected by MBF sky transfer lines will use both the primary and secondary sky textures together. The secondary texture will be drawn first, normally, then the primary texture will be drawn over it, omitting any pixels which use palette index zero (this is usually pure black). Any MapInfo sky delta values provided will be applied to their respective textures. For example:
       intertext = MAP04TXT
       doublesky = true


'''killfinale'''
====fullbright====
:Boolean value that allows built-in text intermission points to be disabled. For example, if you do not want text to appear after DOOM II MAP11, set this variable to true. For example:
:Boolean value that determines whether fullbright can be used on this level. When fullbright is disabled, player gun flashes will not occur, and fullbright sprites and particles will be drawn normally. This should be used with most custom colormaps, since flashes and fullbright sprites usually look incorrect with them. For example:
      killfinale = true
       fullbright = false
 
'''killstats'''
:Boolean value that allows the statistics intermission between two maps to be disabled. If the map has a finale sequence to be displayed, it will start immediately, otherwise the next map will be loaded. For example:
      killstats = true
 
'''levelname'''
:This is the name of the level which will be displayed in the automap. This value overrides any string provided via DeHackEd. For example:
      levelname = chadders' lair
 
'''levelpic'''
:This is the name of a graphic lump which will be shown as the level name during the statistics intermission when this map is the previous map which was just beaten. Note: you cannot currently specify the graphic to be shown for the next map. This is a known bug in MapInfo and may not be repaired due to the new edf-intername feature. This value is only used for DOOM and DOOM II maps. For example:
       levelpic = E1M1PIC
 
'''levelpicnext'''
:Same as levelpic, but only if the normal exit was taken.
 
'''levelpicsecret
:Same as levelpic, but only if the secret exit was taken.
 
'''levelscript'''
:Name of a compiled {{Deprecated}} Small script lump which will serve as the Levelscript for this map. NOTE: use '''acsscript''' for compiled ACS scripts.


'''leveltype'''
====lightning====
:String value that declares what type of level the current map is classified as. Possible values are "doom" and "heretic". This variable affects the automatic translation of thing types and line specials. For example:
      leveltype = heretic
 
'''lightning'''
:Boolean value that toggles the global lightning effect. When set to true, all sky sectors on the map will flash at randomly determined intervals along with a thunder sound and optional animation of the normal sky texture. Warning: sectors must currently have a sky ceiling at the beginning of the level in order to be affected by lightning. The only current method to make non-sky sectors flash during lightning strikes is via use of BOOM lighting transfer linedefs. This may be improved in the near future. For example:  
:Boolean value that toggles the global lightning effect. When set to true, all sky sectors on the map will flash at randomly determined intervals along with a thunder sound and optional animation of the normal sky texture. Warning: sectors must currently have a sky ceiling at the beginning of the level in order to be affected by lightning. The only current method to make non-sky sectors flash during lightning strikes is via use of BOOM lighting transfer linedefs. This may be improved in the near future. For example:  
       lightning = true
       lightning = true


'''music'''
====music====
:Provides the name of a MUS or MIDI lump to use as music. In DOOM gamemodes, the string provided should be the lump name minus the "D_" prefix. In Heretic, the string provided should be the lump name minus the "MUS_" prefix. You are *not* limited to using only the built-in music lump names; Eternity automatically adds any new lump which matches the naming convention for the current gamemode to the internal music list. For example:
:Provides the name of a MUS or MIDI lump to use as music. In DOOM gamemodes, the string provided should be the lump name minus the "D_" prefix. In Heretic, the string provided should be the lump name minus the "MUS_" prefix. You are *not* limited to using only the built-in music lump names; Eternity automatically adds any new lump which matches the naming convention for the current gamemode to the internal music list. For example:
       music = cheese
       music = cheese


'''nextlevel'''
====sector-colormaps====
:The exact header name of the next level to go to when a normal exit occurs on this map. This can specify *any* lump name, but the lump should be a valid level header or an error will occur. For example:
:'''(since 2nd April 2017)''' This optional property can be used to enforce classic Boom or SMMU-style behaviour for sector colormap applications using either the [[Transfer_Heights]] linedef special or [[ExtraData]] or [[UDMF]] sector properties. Possible values are:
      nextlevel = CHAD2
:*''normal'': this is the default value. It makes the [[Transfer_Heights]] special apply the Boom behaviour, where the sector the player is in causes the entire view to change colour, while [[ExtraData]] and [[UDMF]] use the SMMU-introduced behaviour, where the sector colour is local to the sector, as if having local coloured light or fog effect. It's default because of required compatibility with past Boom and MBF wad releases, whereas the new SMMU introduced behaviour can be more useful for new maps with ExtraData or UDMF.
 
:*''Boom'': the Boom sector colormap behaviour will apply to all kinds of colormap settings, like in Boom or MBF.
'''nextsecret'''
:*''SMMU'': the SMMU sector colormap behaviour will apply to all kinds of colormap settings, like in previous Eternity versions.
:The exact header name of the next level to go to when a secret exit occurs on this map. This can specify *any* lump name, but the lump should be a valid level header or an error will occur. Note that except for maps which normally have secret exits, the default behavior is to repeat the same level. This MapInfo value allows you to avoid that and use a secret exit on any map. For example:
       sector-colormaps = normal
      nextsecret = MAP34
 
'''partime'''
:Partime for the map in seconds. This value overrides any value provided via DeHackEd. Note that partimes are only supported in episodes 1-3 of DOOM and any map of DOOM II. Ultimate DOOM episode 4, Heretic, and non-standard maps currently never display par times. For example:
       partime = 200


'''skydelta'''
====skydelta====
:Pixels per gametic that the primary sky texture should scroll. This effect will only be applied to double skies and to F_SKY1 sectors which are NOT affected by any MBF sky transfer linedefs. For example:
:Pixels per gametic that the primary sky texture should scroll. This effect will only be applied to double skies and to F_SKY1 sectors which are NOT affected by any MBF sky transfer linedefs. For example:
       skydelta = 5
       skydelta = 5


'''sky2delta'''
====sky2delta====
:Pixels per gametic that the secondary sky texture should scroll. This effect will only be applied to double skies and to F_SKY2 sectors (which cannot be affected by MBF sky transfer linedefs). For example:
:Pixels per gametic that the secondary sky texture should scroll. This effect will only be applied to double skies and to F_SKY2 sectors (which cannot be affected by MBF sky transfer linedefs). For example:
       sky2delta = 7
       sky2delta = 7


'''skyname'''
====skyname====
:Name of a texture to use as the primary sky for this map. This sky will appear in all sectors which use the F_SKY1 flat, and it will also appear as the top layer of Hexen-style double skies. The name provided for this lump must be a valid texture or an error will occur. For example:
:Name of a texture to use as the primary sky for this map. This sky will appear in all sectors which use the F_SKY1 flat, and it will also appear as the top layer of Hexen-style double skies. The name provided for this lump must be a valid texture or an error will occur. For example:
       skyname = SKY2
       skyname = SKY2


'''sky2name'''
====sky2name====
:Name of a texture to use as the secondary sky for this map. This sky will appear in all sectors which use the F_SKY2 flat, and it will also appear as the bottom layer of Hexen- style double skies. The name provided for this lump must be a valid texture or an error will occur. If no name is provided for the secondary sky, the primary sky name will be copied to it, so it is not an error to use F_SKY2 or double skies in a level where the sky2 texture is not explicitly defined. For example:
:Name of a texture to use as the secondary sky for this map. This sky will appear in all sectors which use the F_SKY2 flat, and it will also appear as the bottom layer of Hexen- style double skies. The name provided for this lump must be a valid texture or an error will occur. If no name is provided for the secondary sky, the primary sky name will be copied to it, so it is not an error to use F_SKY2 or double skies in a level where the sky2 texture is not explicitly defined. For example:
       sky2name = SKY4
       sky2name = SKY4


'''unevenlight'''
====unevenlight====
:Boolean value that determines whether walls parallel to the x and y axes of the game world are given lighting values 1 level higher or lower than other walls. This can dramatically affect the perceived light level of an area, so only use it for maps that are designed specifically for it. Maps which use custom global colormaps should usually set this value to false, since it only generally looks appropriate with the normal colormap. For example:
:Boolean value that determines whether walls parallel to the x and y axes of the game world are given lighting values 1 level higher or lower than other walls. This can dramatically affect the perceived light level of an area, so only use it for maps that are designed specifically for it. Maps which use custom global colormaps should usually set this value to false, since it only generally looks appropriate with the normal colormap. For example:
       unevenlight = false
       unevenlight = false


'''sound-*'''
====sound-*====
:There are several sound-* commands which can be used to replace the default sounds in a map with sounds, using their mnemonics defined in [[EDF]].
:There are several sound-* commands which can be used to replace the default sounds in a map with sounds, using their mnemonics defined in [[EDF]].
[[EDF]] mnemonic of a sound to replace the default "swtchn" sound for this map.
[[EDF]] mnemonic of a sound to replace the default "swtchn" sound for this map.
Line 208: Line 171:
  sound-swtchx = newswtch
  sound-swtchx = newswtch
  sound-doropn = dorcreak
  sound-doropn = dorcreak
===Finale control===
====boss-specials====
:A flags field that specifies what formerly level-specific boss "magic codepointer" actions are enabled for this level. This field takes a value in the same format as that used by [[EDF]], DeHackEd/BEX, and ExtraData flag fields, but the format will be reviewed here for completeness.
A BEX flag list is a string of flag names separated by whitespace, pipe characters, commas, or plus characters. Flags are combined using bitwise-OR logic, so a flag name can be specified more than once. Specifying a flag name causes that flag to be turned on. The default state of all flags is off.
These are the flag values which are available for this field:
          Flag name  Decimal  Hex    Meaning
          -----------------------------------------------------------------
          MAP07_1    1        0x0001  MAP07 Special 1 (BossDeath only)
          MAP07_2    2        0x0002  MAP07 Special 2 (BossDeath only)
          E1M8      4        0x0004  E1M8 Special
          E2M8      8        0x0008  E2M8 Special
          E3M8      16      0x0010  E3M8 Special
          E4M6      32      0x0020  E4M6 Special (BossDeath only)
          E4M8      64      0x0040  E4M8 Special
          E5M8      128      0x0080  E5M8 Special (HticBossDeath Only)
          -----------------------------------------------------------------
Notes: Actions differ depending on whether monsters use the BossDeath or HticBossDeath codepointers. See the documentation for those specific codepointers to see what actions they perform. The monsters which must be dead for a given special to activate are controlled by various [[EDF]]/BEX thingtype flags. Together, these features allow complete customization.
Example flags fields -- All of these are equivalent:
          boss-specials = MAP07_1|MAP07_2
          boss-specials = MAP07_1 | MAP07_2
         
          boss-specials = MAP07_1+MAP07_2
          boss-specials = MAP07_2 + MAP07_2
         
          boss-specials = MAP07_1,MAP07_2
          boss-specials = MAP07_1, MAP07_2
         
          boss-specials = MAP07_1 MAP07_2
====endofgame====
:Boolean value which, if true, causes a DOOM II cast call to occur when this map is exited. This value is currently only usable in DOOM II. A level must also have intermission text defined for a cast call to take place. For example:
      endofgame = true
====finale-early====
:Boolean value which, if true, indicates that a text intermission should occur after this map without displaying the usual score screen. If no intermission text is defined for this map, this variable has no effect. For example:
      finale-early = true
====finale-normal====
:Boolean value which, if true, indicates that a text intermission should only occur after this map if a normal exit was taken. If no intermission text is defined for this map, this variable has no effect. For example:
      finale-normal = true
====finale-secret====
:Boolean value which, if true, indicates that a text intermission should only occur after this map if a secret exit was taken. If no intermission text is defined for this map, this variable has no effect. For example:
      finale-secret = true
====finaletype====
:Specifies which finale image sequence to use. Possible values are:
:*''text'': Only the intertext will be displayed. Play will then continue to the next level normally.
:*''doom_credits'': The DOOM CREDITS screen will be displayed after the intertext. Play ends after this map.
:*''doom_deimos'': The DOOM picture of Deimos above Hell will be displayed after the intertext. Play ends after this map.
:*''doom_bunny'': The scrolling picture of Daisy's head on a pike will be displayed, accompanied by the words "THE END" which are shot up with several bullets. Play ends after this map.
:*''doom_marine'': The E4 ending picture of the Marine holding Daisy's head is displayed after the intertext. Play ends after this map.
:*''htic_credits'': The Heretic CREDITS screen will be displayed after the intertext. Play ends after this map.
:*''htic_water'': The Heretic underwater screen with special palette is displayed after the intertext. Play ends after this map.
:*''htic_demon'': The Heretic demon scroller is displayed after the intertext. Play ends after this map.
====finalesecrettype====
:Like above, but for the secret exit.
====inter-backdrop====
:Name of a 64x64 flat OR a 320x200 graphic lump to be displayed as the background of a text intermission which occurs after this map. The flat namespace will be searched first, so if both a flat and a 320x200 picture of the same name exist, the flat will be chosen. For example:
      inter-backdrop = FLATHUH1
====intermusic====
:Name of a MUS or MIDI lump to use as music during a text intermission which occurs after this map. If no intertext is defined for the map, this value will not be used. In DOOM gamemodes, the string provided should be the lump name minus the "D_" prefix. In Heretic, the string provided should be the lump name minus the "MUS_" prefix. You are *not* limited to using only the built-in music lump names; Eternity automatically adds any new lump which matches the naming convention for the current gamemode to the internal music list. For example:
      intermusic = ROMERO
====intertext====
:Lump name of a text lump to be loaded as intermission text for this level. If the level has an intermission by default, this will replace the default intermission text, even if it has been edited via DeHackEd. If there is not normally a text intermission after this map, the presence of this variable serves to enable it. If no intertext is defined, a text intermission will not occur after a map. The formatting of the text inside the indicated lump will be preserved exactly, with the exception of tabs, which are converted to spaces. There is no length limitation, but only one screen of text (40 columns, 17 rows) can be displayed. Any extra text will be drawn off the bottom of the screen. For example:
      intertext = MAP04TXT
====killfinale====
:Boolean value that allows built-in text intermission points to be disabled. For example, if you do not want text to appear after DOOM II MAP11, set this variable to true. For example:
      killfinale = true
====levelaction====
:Specifies what happens when certain species of monsters all die in the map. The syntax is such: ''thingtype'' ''special'' [''arg1'' [''arg2'' [''arg3'' [''arg4'' [''arg5'']]]]]. You can even have more than one per level.
      levelaction = BaronOfHell Floor_LowerToLowest 671 8
      levelaction = Arachnotron Floor_RaiseByValue  667 8 24


==Examples of MapInfo Definitions==
==Examples of MapInfo Definitions==

Revision as of 19:33, 22 June 2019

MapInfo serves as a method of customizing some aesthetic properties of a map which would otherwise be unchangeable, as well as adding the ability to use some Eternity-specific features. Eternity's MapInfo is stored in the EMAPINFO text lump.

Back to Eternity Engine
  • This section incorporates text from the HTML Eternity documentation.

Usage

MapInfo data is stored in the global EMAPINFO lump, which is a plain-text lump containing information for all maps together. Variables for each level must be placed under a section header that has the same name as the map's header lump.

Syntax

  • Each map definition begins with a block header. This consists of the map's lump name in brackets, such as [MAP01], [E1M1], or [MYLEVEL].
  • Variables are specified in the lines following the block header.
  • All values are treated as text strings, and quotation marks are not required.
  • Comments may start with '#', ';', or '//'. All three comments are single line only, and extend to the end of the line.
  • An optional equal sign can be placed between a variable and the value it is given. It is not an error to omit it.

MapInfo Variables

Level identification

creator

The level author's name, which can be viewed in the console using the "creator" console command. If this value is not provided, the default value is "unknown". For example:
     creator = Edwin Chadwick 'chadders'

edf-intername

Boolean value which, if true, enables the use of EDF-defined intermission map name strings which will be drawn using the FONTB graphics (provided in eternity.wad for DOOM/DOOM II, and natively supported by Heretic). This feature is meant to obsolete the levelpic variable and to remove the need for authors to create title graphics for their maps in DOOM/DOOM II. It also allows intermission map name replacement to work correctly for the next level and for Heretic without any hacks.

The EDF string which will be used as the intermission name for the current map should have the mnemonic _IN_NAME_<mapname>, where <mapname> is the exact name of the map's header lump (Example: _IN_NAME_MAP01). In order for the name of the next map to display correctly, the current level must either define its nextlevel/nextsecret values explicitly, or it must be an ExMy or MAPxy level. For example:

     edf-intername = true

inter-levelname

Name of the map to display in the intermission score screen. This is separate from levelname which is for the automap display, and can be used as an alternative to levelpic which is a graphic lump for the intermission name. If both inter-levelname and levelpic are present, levelpic takes precedence. Unlike levelpic, this one also works in Heretic. For example:
     inter-levelname = Circle of death

interpic

Name of a 320x200 graphic lump to be displayed as the background of the statistics intermission. For example:

interpic = BOSSBACK

killstats

Boolean value that allows the statistics intermission between two maps to be disabled. If the map has a finale sequence to be displayed, it will start immediately, otherwise the next map will be loaded. For example:
     killstats = true

levelname

This is the name of the level which will be displayed in the automap. This value overrides any string provided via DeHackEd. If you want to change the level name displayed in the intermission, change levelpic or inter-levelname. Levelname example:
     levelname = chadders' lair

levelpic

This is the name of a graphic lump which will be shown as the level name during the statistics intermission when this map is the previous map which was just beaten. This value is only used for DOOM and DOOM II maps. You can also use inter-levelname to set the intermission display level name, which will use the necessary font, already included in Eternity. Levelpic example:
     levelpic = E1M1PIC

levelpicnext

The level pic to show for the next level, only when taking the normal exit. If omitted, it will try that level's levelpic or write the name of it using the font.

levelpicsecret

Same as levelpicnext, but for taking the secret exit instead.

nextlevel

The exact header name of the next level to go to when a normal exit occurs on this map. This can specify *any* lump name, but the lump should be a valid level header or an error will occur. For example:
     nextlevel = CHAD2

nextsecret

The exact header name of the next level to go to when a secret exit occurs on this map. This can specify *any* lump name, but the lump should be a valid level header or an error will occur. Note that except for maps which normally have secret exits, the default behavior is to repeat the same level. This MapInfo value allows you to avoid that and use a secret exit on any map. For example:
     nextsecret = MAP34

partime

Partime for the map in seconds. This value overrides any value provided via DeHackEd. Note that partimes are only supported in episodes 1-3 of DOOM and any map of DOOM II. Ultimate DOOM episode 4, Heretic, and non-standard maps currently never display par times. For example:
     partime = 200

Scripting

acsopendelay

Boolean value that determines whether or not scripts' execution within the first 35 tics after entering the map is delayed until 35 tics have passed. (since 16th Feb 2016)
         acsopendelay = true

acsscript

Name of the lump containing the compiled ACS script for this map.
         acsscript = SCRIPT01

extradata

Name of the ExtraData script lump for this map. See the ExtraData Reference for full information on ExtraData. There are no naming restrictions on ExtraData script lumps. For example:
     extradata = EXTRDT01

levelscript

Name of a compiled (deprecated) Small script lump which will serve as the Levelscript for this map. NOTE: use acsscript for compiled ACS scripts.

Physics

aircontrol

How much control the player has when attempting to move while in mid-air. By default Doom and Heretic have it 0 (no control whatsoever) and Hexen and Strife have a tiny value, just enough to allow jumping on objects.
Default value is 0. Keep in mind you can set the comp_aircontrol property in the OPTIONS lump to "yes" or "no", which if enabled, will produce the Hexen effect. Maximum air control is 65536, so anything between 0 and 65536 is equivalent to air control between 0 and 100%.

airfriction

This is an optional field, useful if aircontrol is significant, in order to limit player's speed when moving in mid-air. Non-player objects, such as projectiles, are not affected by this. Default value is 0 (no friction, like in the original games), and the maximum is 65536 (no acceleration whatsoever). In order to feel realistic, if it's needed, make sure to keep airfriction very low, or lower than the ground friction anyway, as it only applies while you're above ground.

disable-jump

If set to true, it will disable player jumping in current level. Default is false.
     disable-jump = true

gravity

Global gravity factor for the current level. The default gravity value is 65536. For example:
         # Enable 50% gravity
         gravity = 32768

Ambience

altskyname

Name of a texture to display instead of the normal sky texture during a lightning strike. This value is only used if lightning is enabled for this level. If this value is not provided, no sky animation will occur during lightning strikes. For example:
altskyname = LBOLTSKY

colormap

Name of a colormap lump to use as the global colormap for this level. This colormap is applied to any sectors which do not have their own colormaps specified either via use of 242 height transfer linedefs or scripting. This lump must be between C_START and C_END tags. For example:
     colormap = FOGMAP

defaultenvironment

Sets the default sound environment (reverb) effect to happen in the map. Use two identifiers, as defined in EDF.
     defaultenvironment = 1 2

doublesky

Boolean value that determines whether or not this map uses double skies. When double skies are enabled, any F_SKY1 or F_SKY2 sectors *not* affected by MBF sky transfer lines will use both the primary and secondary sky textures together. The secondary texture will be drawn first, normally, then the primary texture will be drawn over it, omitting any pixels which use palette index zero (this is usually pure black). Any MapInfo sky delta values provided will be applied to their respective textures. For example:
     doublesky = true

fullbright

Boolean value that determines whether fullbright can be used on this level. When fullbright is disabled, player gun flashes will not occur, and fullbright sprites and particles will be drawn normally. This should be used with most custom colormaps, since flashes and fullbright sprites usually look incorrect with them. For example:
     fullbright = false

lightning

Boolean value that toggles the global lightning effect. When set to true, all sky sectors on the map will flash at randomly determined intervals along with a thunder sound and optional animation of the normal sky texture. Warning: sectors must currently have a sky ceiling at the beginning of the level in order to be affected by lightning. The only current method to make non-sky sectors flash during lightning strikes is via use of BOOM lighting transfer linedefs. This may be improved in the near future. For example:
     lightning = true

music

Provides the name of a MUS or MIDI lump to use as music. In DOOM gamemodes, the string provided should be the lump name minus the "D_" prefix. In Heretic, the string provided should be the lump name minus the "MUS_" prefix. You are *not* limited to using only the built-in music lump names; Eternity automatically adds any new lump which matches the naming convention for the current gamemode to the internal music list. For example:
     music = cheese

sector-colormaps

(since 2nd April 2017) This optional property can be used to enforce classic Boom or SMMU-style behaviour for sector colormap applications using either the Transfer_Heights linedef special or ExtraData or UDMF sector properties. Possible values are:
  • normal: this is the default value. It makes the Transfer_Heights special apply the Boom behaviour, where the sector the player is in causes the entire view to change colour, while ExtraData and UDMF use the SMMU-introduced behaviour, where the sector colour is local to the sector, as if having local coloured light or fog effect. It's default because of required compatibility with past Boom and MBF wad releases, whereas the new SMMU introduced behaviour can be more useful for new maps with ExtraData or UDMF.
  • Boom: the Boom sector colormap behaviour will apply to all kinds of colormap settings, like in Boom or MBF.
  • SMMU: the SMMU sector colormap behaviour will apply to all kinds of colormap settings, like in previous Eternity versions.
     sector-colormaps = normal

skydelta

Pixels per gametic that the primary sky texture should scroll. This effect will only be applied to double skies and to F_SKY1 sectors which are NOT affected by any MBF sky transfer linedefs. For example:
     skydelta = 5

sky2delta

Pixels per gametic that the secondary sky texture should scroll. This effect will only be applied to double skies and to F_SKY2 sectors (which cannot be affected by MBF sky transfer linedefs). For example:
     sky2delta = 7

skyname

Name of a texture to use as the primary sky for this map. This sky will appear in all sectors which use the F_SKY1 flat, and it will also appear as the top layer of Hexen-style double skies. The name provided for this lump must be a valid texture or an error will occur. For example:
     skyname = SKY2

sky2name

Name of a texture to use as the secondary sky for this map. This sky will appear in all sectors which use the F_SKY2 flat, and it will also appear as the bottom layer of Hexen- style double skies. The name provided for this lump must be a valid texture or an error will occur. If no name is provided for the secondary sky, the primary sky name will be copied to it, so it is not an error to use F_SKY2 or double skies in a level where the sky2 texture is not explicitly defined. For example:
     sky2name = SKY4

unevenlight

Boolean value that determines whether walls parallel to the x and y axes of the game world are given lighting values 1 level higher or lower than other walls. This can dramatically affect the perceived light level of an area, so only use it for maps that are designed specifically for it. Maps which use custom global colormaps should usually set this value to false, since it only generally looks appropriate with the normal colormap. For example:
     unevenlight = false

sound-*

There are several sound-* commands which can be used to replace the default sounds in a map with sounds, using their mnemonics defined in EDF.

EDF mnemonic of a sound to replace the default "swtchn" sound for this map.

Sounds available for replacement:

swtchx
swtchn
stnmov
pstop
pstart
bdcls
bdopn
dorcls
doropn
fcmove

Examples of use:

sound-swtchx = newswtch
sound-doropn = dorcreak

Finale control

boss-specials

A flags field that specifies what formerly level-specific boss "magic codepointer" actions are enabled for this level. This field takes a value in the same format as that used by EDF, DeHackEd/BEX, and ExtraData flag fields, but the format will be reviewed here for completeness.

A BEX flag list is a string of flag names separated by whitespace, pipe characters, commas, or plus characters. Flags are combined using bitwise-OR logic, so a flag name can be specified more than once. Specifying a flag name causes that flag to be turned on. The default state of all flags is off.

These are the flag values which are available for this field:

         Flag name  Decimal  Hex     Meaning
         -----------------------------------------------------------------
         MAP07_1    1        0x0001  MAP07 Special 1 (BossDeath only)
         MAP07_2    2        0x0002  MAP07 Special 2 (BossDeath only)
         E1M8       4        0x0004  E1M8 Special
         E2M8       8        0x0008  E2M8 Special
         E3M8       16       0x0010  E3M8 Special
         E4M6       32       0x0020  E4M6 Special (BossDeath only)
         E4M8       64       0x0040  E4M8 Special
         E5M8       128      0x0080  E5M8 Special (HticBossDeath Only)
         -----------------------------------------------------------------

Notes: Actions differ depending on whether monsters use the BossDeath or HticBossDeath codepointers. See the documentation for those specific codepointers to see what actions they perform. The monsters which must be dead for a given special to activate are controlled by various EDF/BEX thingtype flags. Together, these features allow complete customization.

Example flags fields -- All of these are equivalent:

         boss-specials = MAP07_1|MAP07_2
         boss-specials = MAP07_1 | MAP07_2
         
         boss-specials = MAP07_1+MAP07_2
         boss-specials = MAP07_2 + MAP07_2
         
         boss-specials = MAP07_1,MAP07_2
         boss-specials = MAP07_1, MAP07_2
         
         boss-specials = MAP07_1 MAP07_2

endofgame

Boolean value which, if true, causes a DOOM II cast call to occur when this map is exited. This value is currently only usable in DOOM II. A level must also have intermission text defined for a cast call to take place. For example:
     endofgame = true

finale-early

Boolean value which, if true, indicates that a text intermission should occur after this map without displaying the usual score screen. If no intermission text is defined for this map, this variable has no effect. For example:
     finale-early = true

finale-normal

Boolean value which, if true, indicates that a text intermission should only occur after this map if a normal exit was taken. If no intermission text is defined for this map, this variable has no effect. For example:
     finale-normal = true

finale-secret

Boolean value which, if true, indicates that a text intermission should only occur after this map if a secret exit was taken. If no intermission text is defined for this map, this variable has no effect. For example:
     finale-secret = true

finaletype

Specifies which finale image sequence to use. Possible values are:
  • text: Only the intertext will be displayed. Play will then continue to the next level normally.
  • doom_credits: The DOOM CREDITS screen will be displayed after the intertext. Play ends after this map.
  • doom_deimos: The DOOM picture of Deimos above Hell will be displayed after the intertext. Play ends after this map.
  • doom_bunny: The scrolling picture of Daisy's head on a pike will be displayed, accompanied by the words "THE END" which are shot up with several bullets. Play ends after this map.
  • doom_marine: The E4 ending picture of the Marine holding Daisy's head is displayed after the intertext. Play ends after this map.
  • htic_credits: The Heretic CREDITS screen will be displayed after the intertext. Play ends after this map.
  • htic_water: The Heretic underwater screen with special palette is displayed after the intertext. Play ends after this map.
  • htic_demon: The Heretic demon scroller is displayed after the intertext. Play ends after this map.

finalesecrettype

Like above, but for the secret exit.

inter-backdrop

Name of a 64x64 flat OR a 320x200 graphic lump to be displayed as the background of a text intermission which occurs after this map. The flat namespace will be searched first, so if both a flat and a 320x200 picture of the same name exist, the flat will be chosen. For example:
     inter-backdrop = FLATHUH1

intermusic

Name of a MUS or MIDI lump to use as music during a text intermission which occurs after this map. If no intertext is defined for the map, this value will not be used. In DOOM gamemodes, the string provided should be the lump name minus the "D_" prefix. In Heretic, the string provided should be the lump name minus the "MUS_" prefix. You are *not* limited to using only the built-in music lump names; Eternity automatically adds any new lump which matches the naming convention for the current gamemode to the internal music list. For example:
     intermusic = ROMERO

intertext

Lump name of a text lump to be loaded as intermission text for this level. If the level has an intermission by default, this will replace the default intermission text, even if it has been edited via DeHackEd. If there is not normally a text intermission after this map, the presence of this variable serves to enable it. If no intertext is defined, a text intermission will not occur after a map. The formatting of the text inside the indicated lump will be preserved exactly, with the exception of tabs, which are converted to spaces. There is no length limitation, but only one screen of text (40 columns, 17 rows) can be displayed. Any extra text will be drawn off the bottom of the screen. For example:
     intertext = MAP04TXT

killfinale

Boolean value that allows built-in text intermission points to be disabled. For example, if you do not want text to appear after DOOM II MAP11, set this variable to true. For example:
     killfinale = true

levelaction

Specifies what happens when certain species of monsters all die in the map. The syntax is such: thingtype special [arg1 [arg2 [arg3 [arg4 [arg5]]]]]. You can even have more than one per level.
     levelaction = BaronOfHell Floor_LowerToLowest 671 8
     levelaction = Arachnotron Floor_RaiseByValue  667 8 24

Examples of MapInfo Definitions

A basic MapInfo lump may be similar to this:

   [MAP01]
   levelname = Evil Hell Lab
   creator = DooMGuy667
   [E1M1]
   levelname = Not Hangar
   creator = Not Romero
   skyname = SKY3
   skydelta = 1

The first example would change the automap and intermission screen names for MAP01 to "Evil Hell Lab" and when the creator command is used in the console, output "DooMGuy667". The name in the braces is the map the MapInfo applies to, so by changing [MAP01] to [MAP02], the changes would apply to MAP02 instead.

The second example also sets a name and creator for the map (for the E1M1 mapslot, in this case), and also specifies that it will use SKY3 and scroll the sky slowly, using the skydelta variable.