
          ##   ##    ##    ##   ##   ####     ####   ###     ###
          ##   ##  ##  ##  ##   ##  ##  ##   ##  ##  ####   ####
           ## ##  ##    ##  ## ##  ##    ## ##    ## ## ## ## ##
           ## ##  ########  ## ##  ##    ## ##    ## ##  ###  ##
            ###   ##    ##   ###    ##  ##   ##  ##  ##       ##
             #    ##    ##    #      ####     ####   ##       ##

                   E D I T I N G   R E F E R E N C E

!!! Under construction, wanna help?



  1   Filesystem


  Vavoom is now using a filesystem similar to the one of Quake.

  The "game directory" is the first tree on the search path and directory
that all generated files (savegames, screenshots, demos, config files) will
be saved to. This can be overridden with the "-game" or "-devgame" command
line parameter. "-devgame" option is used to put Vavoom into game development
mode. This means that for some wad lumps Vavoom first tries to load them from
files. In current version they are:

    levels     - maps/<level-name>.wad
    progs      - progs/<name>.dat
    scripts    - scripts/<name>.txt

  For each game directory Vavoom searches for base.txt script file. It is
used to setup game directory on which this game is based on. It consists of
list of entries with the following format:

    game <gamedir>
    [iwad <iwad-file>]
    [param <option>]
    end

  where

    gamedir   - game directory of this game.
    iwad-file - main wad file needed for this game.
    option    - when multiple iwad files are present this command line option
              can be used to force selection this game.

  The entries are procesed in backwards order.

  If "-game" and "-devgame" options are not used, basev/games.txt script is
used to detect game. The format is same as base.txt script.

  The game directory can nevr be changed while Vavoom is executing. This is a
precacution against having a malicious server instruct clients to write files
over areas they shouldn't.

  WAD files are added in the following order:
    - main wad file;
    - for each game directory all wad files in form wad0.wad, wad1.wad ...
      until one is missing;
    - files specified with "-file" option.



  2   New linedef special types


  All additional linedef specials are available only for maps in Hexen format.


3D-floor
--------

Special #: 160
     Arg1: tag

  Adds a extra floor at all sectors with tag equal to Arg1. Extra floor is
described with line's front sector. It's floor describes floor of the top
region, ceiling - ceiling of bottom region, light level and contents - light
level and contents of bottom region.
  WARNING: WadAuthor checks treats floor lower than ceiling as error, so for
maps with 3D-floors you should never use "Fix all".


Contents
--------

Special #: 161
     Arg1: type
     Arg2: translucency
     Arg3: flags

  Defines contents type of the front sector.
  Doom content types:
    0 - empty
    1 - water
    2 - blood
    3 - nukage
    4 - slime
    5 - lava
  Heretic and Hexen content types:
    0 - empty
    1 - water
    2 - lava
    3 - sludge
  Translucency is given in percents, 0 - sold, 100 - invisible. Flags applies
to both - floor and ceiling and are combination of the following values:
    1 - don't block movement
    2 - don't block sight
    4 - don't block shooting
  Translucency and flags have sense only if sector is used for 3D-floors.
Usualy for solid 3D-floors you will have flags 0, for water surfaces - 7.



  3   New thing types


Floor slope
-----------

Editor #: 1500

  Used to describe floor slope. It works together with line of sector, where
this thing is placed in, with Arg1 equal to thing's TID number. Floor plane
is defined with 3 points - thing's position and line ending vertexes at
sector's floor height.
  HINT: In WadAuthor if line doean't have a special type or special type
doesn't use Arg1, Arg1 must be changed using "Edit raw data".


Ceiling slope
-----------

Editor #: 1501

  Used to describe ceiling slope. Alghorythm is similar to floor slopes.


Static light
------------

Editor #: 1502
       Z: z position of light source
    Arg1: octradius (i.e. radius is Arg1 * 8)

  Adds a static light source at given position with given radius.


Static colored light
--------------------

Editor #: 1503
       Z: z position of light source
    Arg1: octradius (i.e. radius is Arg1 * 8)
    Arg2: r
    Arg3: g
    Arg4: b

  Adds a static colored light source at given position with given radius
and color. R is red, G - green and B - blue component of color.



  4   The MAPINFO script


  Vavoom extends MAPINFO script with some new entries and adds some extra
functionality to the existing entries.

    map:        Number or lump name and name of map
    warptrans:  Actual map number in case maps are not sequential
    next:       Map to teleport to upon exit of timed deathmatch or with
                normal exit action special
    secret:     Map to teleport to with seret exit action special
    music:      MUS or MIDI to play during level, replaces entries in
                SNDINFO script
    cdtrack:    CD track to play during level
    cluster:    Defines what cluster level belongs to, 0 for no-cluster
    sky1:       Default sky texture; followed by speed
    sky2:       Alternate sky displayed in Sky2 sectors ; followed by speed
    doublesky:  parallax sky: sky2 behind sky1
    lightning:  Keyword indicating use of lightning on the level
                flashes from sky1 to sky2 (see also: IndoorLightning special)
    skybox:     A skybox used in this level, old sky will be ignored
    fadetable:  When set to FOGMAP, level will have a fog, other values are
                ignored
    mapalias:   A list of map aliases enclosed by braces with number used in
                MapTeleport and StartACS specials and actual lump name.

  Example MapInfo entries:

    map 1 "Winnowing Hall"
    warptrans 1
    next 2
    cluster 1
    sky1 SKY2 2             ; 2 is the sky scroll speed
    sky2 SKY3 0             ; 0 means don't scroll sky
    lightning
    doublesky
    cdtrack 13

    map E1M1 "hangar"
    next E1M2
    secret E1M9
    sky1 SKY1 0
    music D_e1m1

    map TOWN "Town of the Apidomb"
    warptrans 1
    next CAVE1
    cluster 1
    skybox town_sky_with_clouds
    cdtrack 4
    music MD_TOWN
    mapalias
    {
        1 TOWN
        2 CAVE1
        3 DUNG4
    }


  Note on "next" integer (for timed deathmatches):

  In normal gameplay, there is no linear fashion in which the game
progresses from one level to another; you just go through a teleport
somewhere on a level, and it takes you to somewhere on another level.
For timed deathmatch, the game needs to know what level to proceed to
because it isn't always just the next higher level.


  A note about the WARPTRANS keyword:

  Map with WARPTRANS 1 is map where Vavoom running Doom 2 and Hexen will
start play (from menu). All other values are ignored (there's no more -warp
option and console command MAP takes map lump name, not number).


  Note on "cluster" integer:

  The game maps are divided into clusters. When you enter a new cluster, you
can never again visit any of the levels from the previous cluster. This
makes it so each individual save game only needs to backup map archives for
about 6-7 maps, and provides for a milestone marker of sorts for game play,
like an episode -- a Hexen backdrop and some text are given at the end of
each cluster.
  If you don't enter a cluster, it defaults to 0. Cluster 0 is treated as
no-cluster, all maps in cluster 0 are treated as in different clusters.


  Note on MAPALIAS keyword:

  This option haves to applications. First is usage of the non-standard map
names. MapTeleport and StartACS specials takes map numbers and it was
impossible to use maps with non standard names. Map aliases gives you this
ability.
  Other application is when multiple designers used the same map number and
map must be renamed and this means that you must replace values in all
MapTeleport and StartACS specials pointing to this map with new map number.
With this option you define a map alias for all maps accesing this map and
you can leave numbers in specials untouched.



  5   SKYBOXES script


  This script describes skyboxes.

 ... describe format ...

Example:

    rock_dawn
    {
        {
            // Right
            map textures/skies/rkdawnrt.tga
        }
        {
            // Front
            map textures/skies/rkdawnft.tga
        }
        {
            // Left
            map textures/skies/rkdawnlf.tga
        }
        {
            // Back
            map textures/skies/rkdawnbk.tga
        }
        {
            // Up
            map textures/skies/rkdawnup.tga
        }
        {
            // Down
            map textures/skies/rkdawndn.tga
        }
    }
