=============================================================================
                            MAPEDIT README File
                 Copyright (c) 1994-97 Monolith Productions
               additional documentation by Kenneth Silverman
=============================================================================

August 17th, 1997

MAPEDIT is an extension of Ken Silverman's BUILD editor. This program and 
documentation are provided 'as-is' and without any warranty. You must agree
to the terms of the license agreement (license.txt) before you can use
MAPEDIT.

While we cannot support this program, check out www.blood.com for the latest
version and information.

Enhancements from the basic BUILD engine and editor are indicated with an 
asterisk (*).

=============================================================================

MAPEDIT has two modes, both of which are essential:
    3D EDIT MODE
        Presents a real-time view of the level as players will see it 
        in the game. 
    2D EDIT MODE
        Overhead view of the entire board.

You can switch between the modes by pressing Keypad Enter.

Use 3D EDIT MODE for:

    Applying wall, floor, and ceiling textures
        Press V to display all the textures currently in use in the level.
        Note that selecting a wall texture will only display wall textures;
        likewise for floor and ceiling textures, respectively. Press V
        a second time to display the entire art file.

    Placing sprites--decorations, enemies, weapons, etc.
        Press S to place a sprite. You will be presented with a display of
        all sprites currently in the level. Pressing V will display the
	entire art file. If you point the cursor at a wall and press S, you
	will place a wall sprite. Pointing at a floor or ceiling will place
	a face sprite. Note that display of sprites in use will only show 
	sprites of the same type (i.e. face, wall, or flat--further 
	information on sprite types listed below).
	Special items, such as weapons, enemies, ammunition, and hazards
	are available in a pop-up menu. Press Alt-S and choose the class
	you want by clicking on the tab or pressing the underlined letter
	(i.e. 'E' for enemies). 

    Shading surfaces or objects
        Press keypad +/- to adjust. Keypad 0 returns the surface to zero
        shading (i.e. the middle of the spectrum). Ctrl + and Ctrl - select
        full brightness and full darkness, respectively. Note that MAPEDIT
        shades each surface separately. A surface can be defined as the
        floor or ceiling of any sector, or a section of wall between two
        points.

        You can adjust the shading of an entire sector or series of sectors 
        by Alt-selecting them (see below).

    Scaling textures and sprites
        Press keypad 2, 4, 6, or 8 to scale. Hold down Shift for finer
        adjustments.

    Panning textures and offsetting sprites
        To adjust the relative position of a texture on a surface, hold down
        Ctrl and press keypad 2, 4, 6, or 8. For finer adjustments, use 
        Ctrl+Shift. You can also offset a sprite's position in this manner,
        but it is usually preferable to simply move it in 2D mode.

    Elevation
        PGUP and PGDN adjust the elevation of the currently selected sector
        or sprite. To adjust a floor, point at the floor. To adjust a 
        ceiling, point either at a wall or ceiling.
        If you point at a surface or object and left click and hold, the
        object will remain selected until you release the left mouse button,
        regardless of the cursor position. This technique is especially 
        useful for creating doors or adjusting small sprites.
        Also, Ctrl+PGUP and Ctrl+PGDN move a ceiling, floor, or sprite to 
        the nearest adjacent elevation. For example, if you have raised one
        section of your ceiling to a given height, you may quickly move
        neighboring sections to the same elevation in this manner.
        Finally, Alt+PGUP and Alt+PGDN allow you to set ceiling and floor
        elevations to specific settings. Most measurements in MAPEDIT are
        handled in multiples of 8--a one-story room would be 128 units high,
        a two-story room 256, and so on. Average doors tend to be 96, 112,
        or 128 units high.

Use the 2D EDIT MODE for:

    Creating sectors
        Press spacebar to start a new sector. Move the cursor to another
        position on the grid and press spacebar to insert additional
        points. Once you've created a sector (minimum of three points),
        you must close the sector by returning to the original
        point and pressing spacebar a final time.

    Manipulating sectors
        You can insert additional points by pointing at a wall and 
        pressing Insert. You can drag points to new positions by left-
        clicking and holding. You can remove points by dragging them to
        an adjacent point.

    Deleting sectors
        To delete a sector, point the cursor at it and press Ctrl+Delete.
        -----------------!!!IMPORTANT!!!----------------------
        DO NOT delete sectors by dragging all their points together. This
        is very bad juju and can screw up your whole map.

    Joining sectors
        To get rid of a red-walled sector without actually deleting it,
        press J on the sector you wish to merge it with and then press J
        again on the sector you would like to get rid of. 

    Editing sector and sprite properties
        To edit a sector, point the cursor at it and press Alt-F5. Use
        the Up and Down arrows to modify fields and the Left and Right
        arrows to move between them. When you are finished, press Enter
        to save any modifications or Esc to discard changes.

Use A and Z to zoom in and out.

==============================================================================
3D EDIT MODE KEYS:

ESC             = Quit
keypad ENTER    = Flip to the 2D EDIT MODE
Mouse           = Move mouse cursor
Arrows          = Movement
Caps Lock       = There are 3 different movement modes in MAPEDIT.
                     Gravity:   Game mode (default). You have gravity.
                     Step mode: Use A and Z to move up and down in steps.
                     Free mode: Use A and Z to move up and down freely.

NOTE: For the following keys, it is important to move the mouse cursor to
the right position before using them.  Remember that if you hold down the 
left mouse button, the item under the cursor will be locked as the
highlighted object until the button is released.  This is useful for the
PGUP/DN keys and shading.

There are 4 basic types of objects that can be worked with in this part
of the editor:  WALLS, CEILINGS, FLOORS, and SPRITES.

      PGUP/DN = Raise or Lower a ceiling or floor.  (If a wall is selected,
                the ceiling of that sector will move)  Also, if you did a
                sector highlight in 2D EDIT MODE, you can raise / lower
                multiple sectors at a time.

Ctrl+PGUP/DN = Puts sprites exactly on the floor or exactly on the ceiling.
               Also, adjust ceiling or floor height to that of adjacent
               sector.

           V = Tile selection - use arrow keys to move around.  Press ENTER
               to change the object to the highlighted piece of artwork, or
               press ESC to cancel without changes made.

       ALT+V = Height selection - works just like V, but this selects the
               groudraw height map.

*          W = Change lighting effect waveform. Once you have created a 
               lighting effect in a sector by editing its properties, you 
               may cycle through the available waveforms by pressing W.

*         F2 = Toggle state of sprite or sector (ON or OFF)

*         F3 = Show sector OFF position for Z-motion sector

*     Alt+F3 = Set OFF position for Z-motion sector

*         F4 = Show sector ON position for Z-motion sector

*     Alt+F4 = Set ON position for Z-motion sector

*         F9 = Auto stair builder.  Highlight a group of sectors,
               then point to an adjoining sector floor or ceiling
               and press F9.  The floor or ceiling you point to will
               be the lowest step. Enter a step height (16 units is
               standard) and voila.


2,4,6,8 (keypad) = Repeat values. Use to scale textures or sprites. Use
           in conjunction with Shift for finer adjustments.

Ctrl +
2,4,6,8 (keypad) = Panning values. Adjusts relative position of texture, as
           well as sprite offset. Use in conjunction with Shift for finer
           adjustments.

       / = Use this key to reset the panning values for a texture or
           sprite.

. or >  =  This function attempts to align matching textures along a wall
           or series of walls. It adjust textures to the right of the start
           position until it encounters a different texture.

       F = Flip an object.  For sprites and walls, this flips the object
           x-wise.  For ceilings and floors, the objects are flipped in
           8 possible ways.  Just keep pressing 'F' to go through
           the 8 ways.

   ALT+F = When you use relative alignment mode on ceiling and floor
           textures, you can press ALT+F on the ceiling or floor to
           choose a new wall to align to.  It actually rotates the walls
           of a sector by 1.

       O = Wall orientation (whether it starts from the top or bottom)
           Normally, walls are oriented from the top.  For example, if
           you hold down 2/8 on the keypad in 3D EDIT MODE, the wall
           always starts from the top.  Orientation works differently
           for white lines and red lines, so if a wall doesn't look
           right, just press 'O' to see if it gets fixed. 


COPY & PASTE

         TAB = COPY. Copy the attributes of the highlighted objects.  The 
               attributes it remembers are: tile, shade, x-repeat, y-repeat, 
               and properties.

      ENTER = PASTE. Paste the stored attributes over the highlighted
              object.  Whenever you press ENTER, the y-repeat values stay
              the same, and the x-repeat values are adjusted so the pixels
              of the bitmaps have a square-aspect ratio.

Ctrl+ENTER  = Paste the attributes to every wall in a sector.

Shft+ENTER  = 
*             Paste shade and palette


Ctrl+Shft+ENTER
*              Paste tile, shade, and palette to all walls in loop

*Alt+ENTER   = Paste properties (i.e. sector type, lighting effects, etc.)

SECTOR KEYS:

*  Ctrl+Alt+ - or +  Decrease/Increase sector visibility

*     Ctrl+ - or +   Decrease/Increase light effect amplitude

*     Shift+ - | +   Decrease/Increase light effect phase

*           [ or ]   Change floor or ceiling slope

*            Alt+]   Align floor or ceiling slope to adjacent floor or ceiling
                     elevation. You may have to Alt+F the sloped sector to get
                     the slope angle right.

*                \   Reset slope to 0


          P = Make ceiling or floor parallax. Best used in conjunction with sky
              textures (i.e. 2500, 3678, and 3491).

          E = Expand or unexpand a floor or ceiling texture. Note that the term
              'expand' is counter-intuitive--expanding a texture actually 
              condenses it. Don't ask.

          R = Relative alignment - switch between relative alignment mode
              and normal mode.  Allows floor / ceiling textures to align
              to the first 2 points of a sector.  Relative textures will 
              rotate/pan with moving sectors properly. 

WALL FLAGS:

         B = Make an invisible wall, such as a window, block you from
             going through.  Since the wall is invisible, you can also
             highlight the ceiling right above the window or floor
             right below the window.  You can block either the front or
             the back of the window.  If you block the back only, you
             will be able to go onto the window sill.

         T = Cycles through degrees of translucency.

         M = Creates an illusionary wall that can be viewed from both
         sides (such as a window). You can make a masked wall blocking
         or hitscan (i.e. blocks vectors).

         1 = Make a 1-way wall and 1-way flat sprites.

         2 = Some walls have two different sections.  One step on the
             ceiling and one step on the floor.  Normally they always
             have the same attributes.  It is possible though, to give
             both the top and bottom different attributes by pressing 2 on
             that wall.  2 simply makes the bottom wall's attributes
             separately editable.  Press 2 on either the top or bottom
             wall.

         O = Wall orientation (whether it starts from the top or bottom
         or, in the case of red walls, the inside or outside). Experiment.

         H = Toggle hitscan. Setting hitscan will make a masked or 1-sided
           wall block vectors (i.e. shotgun blasts and bullets).

SPRITE KEYS:

A word about sprites:

'Face' sprites always face the player.
'Flat' (or 'wall') sprites are fixed in orientation. Examples include signs, 
     paintings, etc.
'Floor' sprites lie flat, usually on a floor or ceiling.

*    Alt+S = Insert a sprite from a menu: Enemy, Weapon, Ammo, Item, Hazard, 
         Misc.  Choose cancel or hit Esc to abort.

         B = When the mouse cursor is on a sprite, this makes a sprite
             block you from walking through. Sprites with the 'B' attribute 
             will appear pink in 2D EDIT MODE

         H = Toggles hitscan on a sprite.

         T = Press to make a sprite 50/50 transluscent.  Press T again
             to put sprite back to normal mode.

         1 = Toggle between 1 and 2-sided for flat and floor sprites.

==============================================================================
2D EDIT MODE KEYS:

     ESC = Show a menu that says, "(N)ew, (L)oad, (S)ave, (Q)uit"
           Press ESC again to cancel the menu.

HIGHLIGHTING:

    The mouse cursor will highlight the nearest object within a specific
    threshold (see MAPEDIT.INI).  The selected object will flash, and any
    XObject information will be displayed in the lower panel.  Key
    operations in 2D will apply to the selected object.


SPRITES:
--------
    Sprites have various shapes in the overhead map, depending on
    their attributes:

    * Face sprites are cyan circles with a line extending from
      the center to indicate their angle. (ref. '<' and '>')

    * Thick sprites have the blocking attribute set. (ref. 'B')

    * Purple sprites have the hitscan attribute set. (ref. Ctrl+H)

    * Sprites with three or four lines extending from the circle
      are wall sprites. The shorter lines indicate which sides are
      visible. (ref. 'R' and '1' in 3D mode keys.)

    * Sprites with square centers are floor sprites, and can be
      manipulated with all the keys referred to above.

WALLS:
------
    This section not complete.

KEYS:
-----

 keypad ENTER = Flip back to the 3D edit mode

              Mouse = Move mouse cursor

 Left mouse button = If you hold down the left mouse button, you can drag
                     existing points.  To drag multiple points you can use
                     the right shift key to first select a rectangular
                     region of points to highlight, then just drag any of
                     the highlighted points and the rest move with it.

Right mouse button = Moves the player's positions to the mouse cursor.
                     This is useful when you accidently get stuck somewhere
                     in the board, or when you need to edit some part of
                     a sector that is hard to access.

       Right Shift = Select a bunch of points for use with dragging around.
                     Selects all points inside a box.  (Use the left mouse
                     button to drag)

  Ctrl+Right Shift = Select a bunch of points for use with dragging around.
                     Selects all points on a loop.  (Use the left mouse
                     button to drag)

         Right Alt = Select a bunch of sectors for either duplication or
                     dragging around.  (see left mouse button for
                     dragging and the insert key for duplication).

            Arrows = Move player position in the appropriate directions.
                     The player will be clipped.  To jump to a different part
                     of the board, use the right mouse button.

             Space = Press the space bar when drawing new sectors.  There
                     are several ways of drawing new sectors.  The following
                     three ways of drawing sectors can all be done by only
                     using the space bar.  The computer is smart enough to
                     decide which method you are using.

                     1.  Drawing a FULL LOOP - that is, whenever the new
                     sector meets the old sector, draw over that line
                     again.  In full loop mode the new sector must not
                     already be in another sector.  The loop is done
                     when you press the space bar at the first point
                     again.

                     2.  SPLITTING a sector - press space bar to draw points
                     at which you want to split a sector.  The computer
                     knows you are done splitting when you end at
                     another point that's on the edge of the sector you
                     are splitting.

                     3.  Drawing a sector COMPLETELY INSIDE another sector.
                     (for example, columns) To do this, just press space
                     bar at every point in the loop.  The loop is done
                     when you press the space bar at the first point
                     again.

         Backspace = When plotting points with the space bar, you can use
                     backspace to get rid of the last point plotted.  You
                     can press the backspace to get rid of all the points
                     if you didn't want to start a sector at all.

            Insert = Inserts a new point at the midpoint of the highlighted
                     line.  Then you can drag the point to wherever you like.
                     (If you insert on a red line, the point will be inserted
                     on both sides of the sector line.)
                     If a bunch of sectors are selected (see right ALT) then
                     instead of inserted points, the selected sector bunch
                     will be duplicated (stamped).  Don't forget to drag
                     the selected sectors after stamping.

            Delete = Use this to delete sprites (blue circles).  To delete
                     points of a sector border, don't press delete.  Instead,
                     drag the point into one of its 2 neighbor points on the
                     sector.  This is easist done if grid locking is on
                     (mouse cursor is pink).  If 2 neighbor points are equal,
                     one will automatically be deleted.

 Right Ctrl-Delete = This deletes the whole sector that the mouse cursor is
                     in.  Note the right ctrl for protection.

 (Note: to delete a point of a sector, just drag that point into the next
        point and it will automatically be deleted.  You should do this with
        grid-locking on)

                 J = Use to join two neighboring sectors.  Press J when mouse
                     cursor is over the first sector.  Then press J again
                     when the mouse cursor is over the neighboring sector.
                     The attributes of the combined sector will be taken from
                     the first sector selected.

             ALT+S = When you have a white loop inside a sector, you can
                     press ALT+S on it (highlight any of its lines) to turn
                     the whole loop red.

                 S = Places a sprite at the location under the mouse cursor.
                     A sprite looks like a blue circle in the overhead map.

                 B = Blocks / unblocks you from going through a wall or
                     sprites.  A blocked wall or sprite will appear pink
                     in 2D EDIT MODE.  See the description for 'B' in
                     the 3D EDIT MODE section for more details.

                 C = Turn a line into a circle defined by short line
                     segments.  First press 'C' on a highlighted wall.  Then
                     move the mouse to the right place and press '+' or '-'
                     if you want to change the number of points on the
                     circle.  Press 'C' again to cancel the circle drawing or
                     press the Space bar to actually change the map.

               +/- = Increase / Decrease the number of points on the circle.

                 T = Type in a LO-tag for a sector.  Move the mouse cursor to
                     the inside of a sector that you want to tag first.

             ALT+T = Just like 'T' but for walls and sprites.

                 H = Type in a HI-tag for a sector.  Move the mouse cursor to
                     the inside of a sector that you want to tag first.
*     (See also: T and Alt+T. Level designers should not edit these
*     fields directly as they are used internally by Monolith's XSYSTEM.)

             ALT+H = Just like 'H' but for walls and sprites.
*    (See also: T and Alt+T. Level designers should not edit these
*    fields directly as they are used internally by Monolith's XSYSTEM.)

*           Ctrl+H = Toggle the hitscan sensitivity of a sprite or masked wall.
                     Objects which are hitscan sensitive can be hit be vector
                     weapons.

*                I = Toggle invisibility for sprites.  Invisible sprites which
                     are non-blocking and non-hitscan sensitive show up as 
                     dark gray.

                 E = Change a sprite's status list number.

           < and > = Rotate a Sprite: Rotation has a precision of 2048 
                     degrees, and sprites can have an angle value range 
                     of 0 to 2047. Pressing the shift key allows a finer 
                     degree of rotation.  
      
                     Rotate a Sector: Sectors highlighted with RightAlt 
                     can also be rotated using these keys.

*         [ and ] =  Rotate a sprite without wrapping. Generally used for 
                     marker sprite rotation, allowing marked sprites to 
                     rotate several times throughout a busy cycle. 


            CTRL+T = Toggle the text captions for sectors, walls and sprites.

               TAB = Move the mouse cursor to the inside of a sector that you
                     you want to see the attributes of.  It will show them
                     at the bottom of the status bar.  To clear it, press
                     TAB again at somewhere in the board that is not part
                     of any sector.  This is a useful key for debugging.

           ALT+TAB = Works just like TAB, but here, you can see the
                     attributes of highlighted walls or sprites.  For red
                     lines, the side the mouse cursor is on the line affects
                     which line is highlighted, since red lines are actually
                     defined as 2 walls (1 wall for each sector).

       Scroll Lock = Set starting position (brown arrow) to your current
                     position (white arrow).

               A,Z = Zoom in and out.  This is useful for choosing whether
                     you want to edit finely or not.

                 G = Change grid resolution.  The grid resolution cycles
                     through this sequence:
             * Off : no grid
             *  1x : 64x64 pixel grid
             *  2x : 32x32 pixel grid
             *  4x : 16x16 pixel grid (* DEFAULT *)
             *  8x : 8x8 pixel grid
             * 16x : 4x4 pixel grid (Has wall texturing problems.)
             * 32x : 2x2 pixel grid (Has wall texturing problems.)

             Use the two finest grid resolutions only for positioning
             sprites.  Wall vertices should not be closer to each other
             than the grid lines at 8x resolution.

*               K =  Mark a wall or sprite for motion
                     (blue = forward motion, green = reverse motion)

                L =  Turns grid locking on or off.  If the mouse cursor is
                     pink then grid locking is on.  If it is white then
                     grid locking is off.  There is no grid locking
                     if the grid is turned off.  Also, grid locking will
                     lock to nearby points.

*               M =  Toggle the mask status of a wall

*               S =  Places a sprite at the location under the mouse cursor. 
                     Refer to the SPRITES section (above) for more information.

*           Alt+S =  Convert internal white sector (single-sided linedef) to a 
                     red sector (double-sided lines). (NOTE: Outer loop cannot 
                     be converted!)

*               F5 = Display sector specific data

*               F6 = Display sprite/wall specific data

*           Alt+F5 = Edit sector specific data in the editing dialog.

*           Alt+F6 = Edit sprite/wall specific data in the editing dialog.

*   While in the editing dialogs, the following keys are active:
        Esc     Exit dialog and abandon changes
        Enter   Exit dialog and save changes
        Left    Previous control
        Sh+Tab  Previous control
        Right   Next control
        Tab     Next control
        Up      Increase value by 1 or 
                move radio button up or 
                find next sound
        Pad +   Increase value by 1
        Down    Decrease value by 1 or 
                move radio button down or
                find previous sound
        Pad -   Decrease value by 1
        Pg Up   Increase value to next multiple of 10
        Pg Dn   Decrease value to next multiple of 10
        Space   Toggle check boxes
        F10     Get next unused channel (rxID and txID only)
                Play audio ID (data fields only)

==============================================================================
TRIGGERS & CHANNELS

"RX ID: <receive channel>"    Set the receive channel by entering the number.
                              Zero means no channel
"TX ID: <transmit channel>"   Set the transmit channel by entering the number.
                              Zero means no channel

Channels <100 are reserved by the sytem.  Level designers should use channels
  >=100.  You can use F10 to get the next available channel for your map.

SetupSecret      1   set up secret count
Secret           2   player found a secret
TextOver         3   blood.ini text messages
EndLevelA        4   end game and go to ending level a
EndLevelB        5   end game and go to ending level b
Trigger Start    7   channel triggered at startup
Trigger Match    8   channel triggered at startup for 
                       BloodBath AND TEAM mode
Trigger Coop    9    channel triggered at startup for Coop mode
Trigger Team    10   channel triggered at startup for Team mode

Trigger TeamADeath    15    channel triggered when player on team a is killed
Trigger TeamBDeath    16    channel triggered when player on team b is killed

Flag0 Captured  80   Message sent to Team 1 Flag
Flag1 Captured  81   Message sent to Team 1 Flag

All other 'system' channels are currently undefined and are reserved.

"Cmd: <number>: <name>"        Command to transmit
    "OFF"
    "ON"
    "State"
    "Toggle"
    "!State"
    "Link"
    "Lock"
    "Unlock"
    "Toggle Lock"
    "Stop OFF"
    "Stop ON"
    "Stop Next"

"Send when:"    
"going ON"            Check to transmit command when transitioning
"going OFF"           Check to transmit command when transitioning

"busyTime = <number>"  Time to take to complete command (to reach 
                       next state).  
                       Units of Time are 1/10 of a second
"waitTime = <number>"  Time to delay before sending message
"restState <number>: <name>"    state to return to on callback

"Trigger On:"    
"Push"              Trigger when player pushes (action key)
"Vector"            Trigger when player hits with vector weapon
"Impact"            Trigger when player hits with explosion weapon
"Pickup"            Trigger when player picks up item
"Touch"             Trigger when player when player hits with body.
"Sight"             Trigger when player can see.
"Proximity"         Trigger when player is near.
"DudeLockout"       Don't allow monsters to trigger (useful for secrets)

"Trigger Flags:"
"Decoupled"        Message is sent in event queue rather than being processed
		   immediately.
"1-shot"           Only is triggered once during play
"Locked"           Is currently locked
"Interruptable"    can change state during 'busytime'

=============================================================================

SPRITES.

Don't place sprites on sector lines.  Weird things can happen to them
(they can't tell which sector they are actually in....)


SPRITE DIALOG

Type	Change the sprite type by using the up and down arrow 
        keys on the name

<Standard Trigger information.  See above>

Launch 1 2 3 4 5 S B C T
        When is sprite in game?  If box is not checked,
        sprite will not appear on the map in that game.

        1-5 are difficulty settings. 
          S means Single player.
          B is bloodbath
          C is co-op play
          T is Team play

"Data1:"    
"Data2:"
"Data3:"
"Data4:"
    These fields hold different data depending on the sprite type.

"Key:"    Key number needed to activate.  Zero means none.

Wave:		Use arrow keys to change
    "None"
    "Square"
    "Saw"
    "Ramp up"
    "Ramp down"
    "Sine"
    "Flicker1"
    "Flicker2"
    "Flicker3"
    "Flicker4"
    "Strobe"
    "Search"

Respawn: When		Sets when item respawns.
        Option        According to the user setting
        Never         Never respawns
        Always        Always respawns
        Perman        Never goes away.

Dude Flags: 
	dudeDeaf	Monster is deaf
	dudeAmbush	Monster waits in Ambush
	dudeGuard	Monster guards an area.
	reserved	Monster is shy.  No wait. It means don't use this flag.

Lock msg:	Message # to send when sprite is in locked state.  
		Messages are in .DEF file or BLOOD.INI

Drop item:	Sprite 'drops' this item when destroyed/killed

==============================================================================
SPRITE TYPES:


DECORATION
	A basic sprite.  It doesn't do anything but look pretty.

PLAYER START
	A player start position.  Data1 is set to the player number - 1.
	Zero is the first player, etc.  Up to eight locations can be set.

BLOODBATH START
	A player start position.  Data1 is set to the player number - 1.
	Zero is the first player, etc.  Up to eight locations can be set.

OFF MARKER
ON MARKER
AXIS MARKER
	Used to give some sector types their positions when they are doing 
	complex movements.

LOWER LINK
UPPER LINK

TELEPORT TARGET

LOWER WATER
UPPER WATER

LOWER STACK
	The ceiling pointer for the stack link.  Data1 is used to match
	the UPPER STACK sprite.  The size of the sectors and the location
	of the sprite in the sectors must match.
UPPER STACK
	The floor pointer for the stack link.

LOWER GOO
UPPER GOO
	Like water, but thicker

PATH MARKER

ALIGNABLE REGION

BASE REGION

DUDE SPAWN
	Data 1 is the type of dude to spawn.  They will appear facing the
	angle of the spawn sprite.  The dude is spawned when its state 
	changes	to 'on'.

	Fanatic			201
	Cultist			202
	Axe Zombie		203
	Bloated Butcher		204
	Earth Zombie		205
	Flesh Gargoyle		206
	Stone Gargoyle		207
	Flesh Statue		208
	Stone Statue		209
	Phantasm		210
	Hound			211
	Hand			212
	Brown Spider		213
	Red Spider		214
	Black Spider		215 (Plasma Pak only)
	Mother Spider		216
	Gill Beast		217
	Eel			218
	Bat			219
	Rat			220
	Green Pod		221 (Plasma Pak only)
	Green Tentacle		222 (Plasma Pak only)
	Fire Pod		223 (Plasma Pak only)
	Fire Tentacle		224 (Plasma Pak only)
	<Reserved>		225-226
	Cerberus		227
	Cerberus (1 dead head)  228 (Jerry special)
	Tchernobog		229
	Fanatic Prone		230
	<Reserved>		231-238
	Innocent Burning	239
	Cultist Burning		240
	Axe Zombie Burning	241
	Bloated Butcher Burning	242
	<reserved>		243
	Sleeping Zombie		244
	Innocent		245
	Cultist Prone		246
	Tesla Cultist		247 (Plasma Pak only)
	Dynamite Cultist	248 (Plasma Pak only)
	Beast Cultist		249 (Plasma Pak only)
	Tiny Caleb		250 (Plasma Pak only)
	The Beast		251 (Plasma Pak only)
	Tiny Caleb burning	252 (Plasma Pak only)
	The Beast burning	253 (Plasma Pak only)

EARTHQUAKE
	Starts an earthquake when triggered.

	Data1 is the strength of the earthquake

TOGGLE SWITCH
1-WAY SWITCH
COMBINATION SWITCH
PADLOCK (1-SHOT)
	These switches remember their position.  They can be used to process
	triggers and also serve as the main 'input' device for the player.

TORCH
CANDLE
	Try turning these 'on' and 'off' with triggers.

Weapons:
RANDOM	(don't use)
PITCHFORK
FLAREGUN
SHOTGUN
TOMMYGUN
NAPALMGUN
TNT
SPRAYCAN
TESLACANNON
LIFELEECH

Weapon Ammo/Items
SPRAYCAN
TNTBUNDLE
TNTCASE
TNTPROXIMITY
TNTREMOTE
SHELLS
SHELLBOX
BULLETS
VOODOODOLL
TOMMYDRUM
BATTERY
FLARES
GASCAN
SOUL

RANDOM AMMO	(don't use)

The Keys to everything:
KEY1
KEY2
KEY3
KEY4
KEY5
KEY6
KEY7

DOCTORBAG
MEDPOUCH	Doesn't do anything special in the game.
LIFEESSENCE
LIFESEED

These don't do anything special in the game.
POTION1
FEATHERFALL

LTDINVISIBILITY
INVULNERABILITY
JUMPBOOTS

RAVENFLIGHT	Used to provide flight long ago, but now doesn't do 
		anything special

GUNSAKIMBO

DIVINGSUIT

These don't do anything special in the game.
GASMASK
CLONE

CRYSTALBALL


These don't do anything special in the game.
DECOY
DOPPLEGANGER

REFLECTIVESHOTS

These don't do anything special in the game.
ROSEGLASSES
SHADOWCLOAK

The 'shrooms are fun to play with
SHROOMRAGE	Doesn't do anything special
SHROOMDELIRIUM	Give you that 'drunk' feeling.  Try creating ones 
		that are invisible.
SHROOMGROW	Doesn't do anything special
SHROOMSHRINK	Doesn't do anything special

DEATHMASK

Some items to leave around:
WINEGOBLET
WINEBOTTLE
SKULLGRAIL
SILVERGRAIL
TOME
BLACKCHEST
WOODENCHEST

ASBESTOSARMOR	(not used in game)
BASICARMOR
BODYARMOR
FIREARMOR
SPIRITARMOR
SUPERARMOR

FLAG0MARKER
FLAG1MARKER

Dudes (monsters)
RANDOM CREATURE	(don't use)

CULTIST W/TOMMY
CULTIST W/SHOTGUN
CULTIST W/TESLA (PLASMA PAK)
CULTIST W/DYNAMITE (PLASMA PAK)
BEAST CULTIST (PLASMA PAK)
TINY CALEB (PLASMA PAK)
BEAST (PLASMA PAK)
AXE ZOMBIE
FAT ZOMBIE	(aka, the Bloated Butcher)
EARTH ZOMBIE	They spring from the ground
SLEEP ZOMBIE	They are lying prone
INNOCENT
FLESH GARGOYLE
STONE GARGOYLE
FLESH STATUE	(changes into Flesh Gargoyle when activated)
STONE STATUE	(changes into Stone Gargoyle when activated)
PHANTASM
HOUND
HAND
BROWN SPIDER
RED SPIDER
MOTHER SPIDER
BLACK SPIDER (PLASMA PAK)
GILLBEAST
EEL
BAT
RAT
GREEN POD (PLASMA PAK)
GREEN TENTACLE (PLASMA PAK)
FIRE POD (PLASMA PAK)
FIRE TENTACLE (PLASMA PAK)
MOTHER POD (not implemented)
MOTHER TENTACLE (not implemented)
CERBERUS
TCHERNOBOG
TCULTIST PRONE
SCULTIST PRONE


Items

TNT BARREL
ARMED PROX BOMB
ARMED REMOTE
	These explode by themselves (according to their type).  You can force
	them to explode by sending them an 'on' command.

Some fun items to leave lying around.
BLUE VASE
BROWN VASE
CRATE FACE
GLASS WINDOW
FLUORESCENT LIGHT
WALL CRACK
WOOD BEAM
SPIDER'S WEB
METAL GRATE1
FLAMMABLE TREE

MACHINE GUN
	This is a trap

FALLING ROCK

KICKABLE PAIL
	The player can kick these around.

Special Objects:

GIB OBJECT

	Data 1-3 are the object to GIB (see list below).  Data4 is the 
	sound ID to generate.

	0	GlassT
	1	GlassS
	2	BurnShard
	3	WoodShard
	4	MetalShard
	5	FireSpark
	6	ShockSpark
	7	BloodChunks
	8	BubblesS
	9	BubblesM
	10	BubblesL
	11	Icicles
	12	GlassCombo1
	13	GlassCombo2
	14	WoodCombo
	15	kGibHuman
	16	MedicCombo
	17	FlareSpark
	18	BloodBits
	19	RockShards
	20	PaperCombo1
	21	PlantCombo1
	22	ShockGibs
	23	ShockGibs2	// floor spread
	24	ShockGibs3
	25	Flames1 (PLASMA only)
	26	Flames2 (PLASMA only)
	27	AxeZombieHead
	28	Mime
	29	Hound
	30	FleshGargoyle

EXPLODE OBJECT
	Things that explode.  Send them an 'on' trigger to make them go 'boom'.

ZOMBIE HEAD
	The players (and monsters) can kick these around.

Traps:

SPIKE TRAP
ROCK TRAP
FLAME TRAP
SAW BLADE
ELECTRIC ZAP
SWITCHED ZAP
PENDULUM
GUILLOTINE
HIDDEN EXPLODER


Generators.

TRIGGER GEN
WATERDRIP GEN
BLOODDRIP GEN
FIREBALL GEN
ECTOSKULL GEN
DART GEN
BUBBLE GEN
MULTI-BUBBLE GEN

Sound Effects Generators

SFX GEN

SECTOR SFX

	These sound effect generators respond to the state of the
	sector that they are in (for example, a door).  Sectors
	don't have sound generating capability, so these sprites
	let the level designer add sound effects to sector effects.
	The sprite must be IN the sector that it is associated with.

	Data 1 is the sound id to play 'going' on (while busytime...)
	Data 2 is the sound id to play when reaching on
	Data 3 is the sound id to play 'going' off.
	Data 4 is the sound id to play when reaching off.

	For examples, see the first two secrets in E1M1: the lowering
	grave on the right as you start and the rotating pillar on the far
	left. 

AMBIENT SFX

	This sprite plays a sound at a particular location in the
	map.  The sound can be hear in 3D by the player.  The
	range of the sound is determined by data1 and data2

	Data1 is the range at which the sound is full volume.
	Data2 is the range at which the sound is no longer heard.
	Data3 is the sound id to play.
	Data4 is the maximum volume to use.

PLAYER SFX

	Data1 is the sound ID to play.  The location of this sprite
	doesn't matter: it will always play in the player's 'head'.

	This is played when an 'on' command is received on the RX
	channel.

	In the Blood maps, these sprites are often placed outside
	of the normal 'play' area in a seperate sector to keep the
	'play' area from getting too cluttered with sprites.

==============================================================================
Edit Wall Dialog

"Type <number>: <name>"
    "Normal"
    "Toggle switch"
    "1-Way switch"
    "Wall Link"
    "Wall Stack (unsupp.)"
    "Gib Wall"

Standard Trigger Information

"Data: <number>"
"Key: <number>"
"panX = <number>"
"panY = <number>"
"panAlways"


===============================================================================
Sector Dialog

"Type <number>: <name>"        Type of Sector

Standard Trigger Information


"ON->OFF:"                  Check to transmit command when transitioning
"send at OFF"               ?
"busyTime = <number>"       Time to take to complete command.  
"wave: <number> <name>"     Transition type

"waitTime = <number>"       Time to wait before sending


"Trigger On:" "Push"        Trigger when player pushes
"Trigger On:" "Vector"      Trigger when player hits with vector weapon
"Trigger On:" "Reserved"
"Trigger On:" "Enter"       Trigger when player enters sector
"Trigger On:" "Exit"        Trigger when player exits sector
"Trigger On:" "WallPush"    Trigger when player pushes on wall

"Data: <number>"    
    Damage Sectors: the amount of damage to apply to the player 
            (and monsters)

"Key: <number>"       Key needed to activate
"Depth = <number>"    Depth of goo in sector
"Underwater"          Is sector underwater
"Crush"               Does sector crush (kill) player

"FX..."               Go to Sector Effects Dialog

===============================================================================
Sector Effects Dialog

"Lighting:"
"Wave: <number> <name>"  Waveform to use for lighting effect
"Amplitude: <number>"    Amplitude of lighting effect
"Freq:    <number>"      Speed of lighting effect
"Phase:    <number>"     Phase of lighting effect
"floor"                  Lighting effect applies to sector's Floor
"ceiling"                Lighting effect applies to sector's Ceiling
"walls"                  Lighting effect applies to sector's Walls
"shadeAlways"            Lighting effect

"More Lighting:"
"Color Lights"           Does sector have colored lights?
"ceil  pal2 = <number>"  Ceiling pal number
"floor pal2 = <number>"  Floor pal number

"Motion FX:"
"Speed = <number>"
"Angle = <number>"
"pan floor"
"pan ceiling"
"panAlways"
"drag"
"Wind vel: <number>"     Wind Velocity
"Wind ang: <number>"     WinAngle
"Wind always"            Wind is always going

"Continuous motion:"
"Z range: <number>"
"Theta: <number>"        Angle of motion
"Speed: <number>"
"always"
"bob floor"
"bob ceiling"
"rotate"

DamageType:			   Damage types are:
    0    Pummel
    1    Burn (fire)
    2    Body
    3    Explode
    4    <reserved>
    5    Spirit
    6    Electric


===============================================================================
Sector Types:

"Normal"
"Z Motion"
"Z Motion SPRITE"
"Warp"               warp when triggered
"Teleporter"
"Slide Marked"       slide all marked walls and sprites within sector
"Rotate Marked"      rotate marked walls and sprites within sector
"Slide"              slide all walls and sprites within sector
"Rotate"             rotate all walls and sprites within sector
"Step Rotate"        rotate in steps of marker angle
"Path Sector"        sector follows a path
		     data 3 of the marker sprite is the sound id to play
"Damage Sector"      do damage to players and dudes while in sector
"Counter Sector"     count objects of data1 type and trigger if >= data2

==========================================================================

Quick Q&A on Sprites


Q: I want to know how to get Caleb to say something when he picks up 
   an object.

A: 
1) On the sprite that's the object of your desire, hit alt-f6 and edit the
   sprite extra data.  Hit F10 in 'TX ID' to get an unused channel.  Set 
   command to "On" and check 'going ON'.  For 'trigger on' check 'Pickup'. 

2) Create a Player SFX sprite to receive on that channel.  Set Data1 to the 
   sound id of what you want played. (Caleb's voice stuff starts at 3000)

==========================================================================

INI files

Blood processes and INI file (default is BLOOD.INI) for a list of episodes 
and levels and related information.

You can specify a different file to use as the the INI file by using the
-ini command line argument to Blood (see bloodhlp.txt).

This allows the level designer to combine their levels into a package
of multiple eposides.

Here is the syntax of the .INI file (see blood.ini for an working example).

[install]
SourceDir= drive and path

[Episode#]
Episode numbers go from 1 to 5 (six for PLASMA PAK)

	Title		= episodeTitle
	BloodBathOnly   = flag  0 or not present means multi and single
                          any other number means multi play only
	CutSceneALevel  = Level number to play Cut Scene A.  Defaults to 
			  first level of episode.

	These are set to the file and path of the videos on the CD by
	the Blood install program.

	CutSceneA	= File and Path of Smacker video to play at entry
			  to specified (in CutSceneALevel) level.
	CutWavA		= File and Path of WAV audio to play (during video)
	CutSceneB	= File and Path of Smacker video to play at end of 
			  episode
	CutWavB		= File and Path of WAV audio to play (during video)

	This contains the map file names maps on the episode.
	Map#		= mapFile  Map numbers from 1 to 16

[mapFile]
	Title		= title
	Author		= author
	Song		= songFile
       Track           = redbookTrack#
	EndingA		= map#		If not specified, then ending the
	EndingB		= map#		level will end the episode.
	Fog		= 0 | 1
		0 == Fog disabled
		1 == Fog enabled
	Message1	= message
	..		..
	Message32	= message
	Messages are text that is displayed when the level designer requests
	it.  Again, see Blood's blood.ini and the Blood maps for examples
	of use.

==========================================================================

DEF files

DEF files are used when user maps are loaded.  When a user map is specified,
the DEF file is also opened and level-specific information is read from it.

For example, the map TEST.MAP could have a DEF file TEST.DEF.  If the DEF
file does not exists, then no extra level information is loaded.

The information in the DEF file is in the same format as the level information
in the INI file.  Here is an example DEF file for Blood's E1M1:

;===============================================================
; Map Definition File
;
; Copyright (c) 1997 Monolith Productions
;
;===============================================================

; optional value to specify episode number to place user map.
; default is first episode (zero)
Episode = 0
; optional value to specify level numer to place user map.
; default is to add at the end of the episode
Level = 0

; The rest of the information is duplicated exactly as it appears in the 
; file INI
Title		= Cradle to Grave
Author		= James "Shade" Wilson
Song		= UNHOLY
Track           = 3
EndingA		= 2
EndingB		= 2
Message1	= 
Message2	= Hit the switch to end the level.
Message3	= Slurp, slurp . . .
;Message4	=
Message5	= OUT! OUT! DAMN SPOT!
Message6	= They'll need more of these.
Message7	= Nevermore . . .
Message8	= Open for Business.
Message9	= I LIVE AGAIN!
Message11	= It is sealed shut.

;===============================================================
;Freeform Level Information
;
;Title                   : 
;Filename                : 
;Author                  : 
;Email Address           : 
;Misc. Author Info       : 


