
DikuEdit, the handy-dandy zone creation and editing tool.

        I. Introduction
       II. General commands
      III. Zone-related commands
       IV. Room/exit command(s)
        V. Mob commands
       VI. Configuration Commands
      VII. Miscellaneous Commands
     VIII. Informational commands
       IX. Inventory-related commands
        X. Display/Interface Notes
       XI. Settings, Aliases, and Variables
      XII. Setting/Using Flag Templates and Defaults
     XIII. Command-Line Options

I. Introduction
---------------

        Howdy.  This documentation file should come accompanied by the 3.09
     or newer release of DikuEdit, made for use with Duris and modified for
     use with Basternae.

        If you want a quick rundown, check out the README file (you should
     probably check it out first anyway) - otherwise, read on.

        These docs cover -

            nifty features of dikuEdit,
            terminology,
            notes about the command parser,
            commands,
            some interface stuff,
            some display stuff,
            default settings files and zone-specific settings files,
            setting/using aliases,
            setting/using variables and the many 'internal use' variables,
            setting/using flag templates,
            the default room/object/mob/exit stuff,
            how the inventory works,
            command-line switches,
            and things to watch for.  (bug-like 'features', in other words)

    First off, some nifty features -

       *  "simulates" a dikuMud in that you walk around in your zone, loading
          objects, purging them, etc

       *  menu-based room/exit/extra desc/object/mob/quest/shop editing, making
          things nice and easy

       *  change vnums on the fly, sorts room/object/mob/quest/shop lists no
          matter what order they're read in

       *  onscreen flag editing, no adding of bitmasks and hoping you got em
          right - even 'templates' to make things REALLY easy

       *  automatic tilde placement as necessary - you don't even need to know
          that dikuMud uses tildes in zone/object/world/mob/quest/shop files

       *  renumbering of entire zone is quick and easy

       *  fully implemented alias/variable system (including tintin-style
          alias/variable definition/referencing)

       *  "default" rooms/objs/mobs/exits - new entities are automatically
          set to these settings

       *  tons of other little features..  load up your favorite zone and
          enjoy

    So without further ado, some terminalogy -

        When I wrote DikuEdit, I had to have a way of representing "types"
     (the stuff listed in the .OBJ and .MOB files) and a way of representing
     instances of those types (I called 'em objectHeres and mobHeres).

        Thusly, you'll see phrases like "edit object type" and "create
     objectHere".  Creating or deleting an objectHere would mean creating or
     deleting an object lying around in the room you're in, editing an object
     type would edit all objectHeres of that type.

    About the command parser -

        Much like DikuMud itself, you can shorten commands, such that if
     you are creating an exit, you can type either "create exit" or "cr e".
     Certain commands are interpreted before others, in general order of
     importance, and aliases are always interpreted first.

        Note: any time 'mob' can be used as an argument, so can 'char',
              as a general rule

    Now, the most exciting part, the commands -

II. General commands
--------------------

        CREATE      - takes at least one argument, with the format
                      "create <room|object|mob|exit> [vnum/exit direction]" -
                      creates one of the specified entity.  Vnum can be
                      specified, as can exit direction for exits.

        EDIT        - takes at least one argument, with the format
                      "edit <room|object|mob|quest|shop|exit|zone|defroom|
                             defobj|defmob|defexit|desc|keyword>
                             [vnum/exit dir]" -
                      edits an entity specified by vnum (or keyword for objs/
                      mobs in the room, direction for exits).
                      Default rooms/objs/mobs/exits detailed below

        CREATEEDIT  - takes at least one argument, with the format
                      "createedit <room|object|mob|exit> [vnum/exit direction]"
                      (exit direction required for exits) - creates an entity
                      and edits it in one command

        CHECK       - takes no arguments - checks entities for common mistakes,
                      such as missing descs, doors with no keywords, etc.  all
                      check settings are toggleable from CHECKCONFIG.

        DELETE      - takes at least one argument, with the format
                      "delete <room|exit|object|mob|quest|shop|objhere/oh|
                               mobhere/mh|defroom|defobj|defmob|defexit>
                               [vnum/exit direction]"
                      (exit direction required for exits, no vnum for default
                       room/obj/mob/exit) - deletes an entity of the specified
                       type

        LOAD        - takes two arguments, with the format
                      "load <object|mob> <vnum>" - creates an object/mobHere
                      in the current room with the specified vnum

        CLONE       - takes three arguments, with the format
                      "clone <room|object|mob> <vnum> [# to clone]" - clones
                      room/objtype/mobtypes <# to clone> times, copying all
                      attributes of the cloned entity - if the last argument
                      is left out, one clone is made

        PURGE       - takes up to one argument, with the format
                      "purge <vnum|keyword|all|allobj|allmob|inv>" - purges
                      obj/mobHeres when a vnum or keyword is specified, "all"
                      deletes all objects and mobs in the zone, "allobj" and
                      "allmob" delete all objects/mobs, "inv" deletes
                      everything in your inventory - if no argument is
                      specified, deletes all objects and mobs in current
                      room

        COPY        - takes at least three arguments, with the format
                      "copy desc <room|mob> <source vnum> [dest vnum]" or
                      "copy default <room|object|mob|exit> [source vnum/exit]"

                      "desc" copies the description of a room/mob to a target
                      room/mob.  When copying roomdescs and leaving out
                      dest vnum, the current room is assumed as the
                      destination.

                      "default" copies the attributes of a room/object/mob/exit
                      to the target default room/object/mob/exit.  Leaving out
                      the vnum for a source room copies the current room,
                      and exits require a source direction, not a source
                      vnum.

                      For instance, typing 'copy def object 1453' would
                      copy the attributes of object 1453 into the default
                      object (defaults covered below).

        MASSSET     - takes three arguments, with the format "massset
                      <room|obj|mob> <flagname> <on/1|off/0>"

                      this command turns a particular flag on or off
                      for every room, obj, or mob.  for instance,
                      typing "massset room safe off" would turn the
                      SAFE bit off in every room in the zone.

        SETRANDOM/  - takes two arguments, with the format "random
        RANDOM        <keyword of mob/obj to change> <random %age>"

                      this command sets the percentage a particular
                      object or mob has to load into the zone, from 1-100%.
                      this can only be used on object/mobHeres, and not
                      types themselves

III. Zone-related commands
-------------------------

        SETZONENUMBER/  - takes one argument, with the format
        SZN               "szn <zonenumb>" - sets all the internal zone
                          flags in .WLD and zone number flag in the
                          .ZON to number specified in zonenumb (note
                          that this can also be done from the "edit zone"
                          menu)

        RENUMBER        - can take one argument, with the format
                          "ren [start vnum]" - if no argument is specified,
                          rooms/objs/mobs are renumbered from lowest vnum in
                          list, and gaps in numbering are removed.  if an
                          argument is specified, rooms/objs/mobs are
                          renumbered starting at number specified.

        RENUMBERROOMS/  - exactly like the 'RENUMBER' command, except that
        RENROOMS          only rooms are renumbered

        RENUMBEROBJECTS/- exactly like the 'RENUMBER' command, except that
        RENOBJECTS        only objects are renumbered

        RENUMBERMOBS/   - exactly like the 'RENUMBER' command, except that
        RENMOBS           only mobs are renumbered (imagine that)

        LIMIT           - takes three arguments, with the format
                          "limit <obj|mob> <vnum> <limit>" - use this command
                          to override the limit dikuEdit automatically
                          writes to the .ZON file for an object/mob type -
                          can also be used for objects/mobs not in the
                          .OBJ/.MOB file, btw

        FIXCOND  - takes no arguments, sets all object types with
                   conditions less than 100 to 100.  added because I kept
                   getting zones where all the conditions are 0...  :)

IV. Room/exit command(s)
-------------------------

        GRID        - takes up to three arguments, with the format
                      "grid <x size> <y size> [z size]" - creates a grid of
                      rooms, all interconnected, with the specified size.  if
                      a default room and/or default exit are defined, they
                      are copied in, so that you can make a large forest
                      with a simple grid command, or hey, even a large
                      desert.  it's all up to you, the zone creator.

        LINKROOMS   - takes up to two arguments, with the format
                      "linkrooms <room1> [room2] <exit dir>" - creates
                      an exit leading from room1 to room2 in the direction
                      specified and an exit leading from room2 to room1
                      in the opposite direction.  if the room2 argument
                      is left out, room1 is assumed to be the current room
                      and the number entered as the first argument is
                      assumed to be the destination room.  (i.e. typing
                      'linkrooms 3993 nw' from room #3990 would create
                      an exit in room #3990 to the northwest leading to
                      3993, and an exit in #3993 leading southeast to
                      room #3990.  simple eh?)

        CHECKMAP    - checks a map for 'mapness'..  if you know how maps
                      are set up, it makes sense

        SWAPEXITS   - takes two arguments, with the format
                      "swapexits <exit dir1> <exit dir2>" - this command
                      simply swaps the two exits specified (can also swap
                      exits that don't exist with those that do)

        SWAPNS      - takes no arguments - swaps all north and south exits
                      (hey, it's kinda neat)

        SWAPWE      - takes no arguments - swaps all west and east exits

        SWAPUD      - takes no arguments - swaps all up and down exits

V. Mob commands
----------------

        GIVE     - same as PUT, but makes more sense conceptually when giving
                   objects to mobs

                   alternatively, if you specify a vnum, the object will be
                   loaded and put into the mob's inventory list automatically.

        GIVEC    - same as PUTC

        EQUIP    - takes at least one argument, with the format
                   "equip <mob keyword|mob vnum> [keyword]" - equips a mob
                   in the current room with an object being carried by the
                   mob.  Wear flags are checked against what mob is currently
                   equipping, and leaving out the second argument attempts to
                   equip everything carried by mob.

                   alternatively, if you specify a vnum, the object will be
                   loaded and put into the mob's eq list automatically.

        UNEQUIP  - takes at least one argument, with the format
                   "unequip <mob keyword|mob vnum> [keyword]" - exactly
                   the same as EQUIP, but unequips stuff, sticking it in
                   the mob's carried list.

        MOUNT    - takes two arguments, with the format
                   "mount <mounting> <mount>" - mounts one mob atop another.
                   for example, "mount man horse"

        UNMOUNT  - takes one argument, with the format
                   "unmount <mounting>" - unmounts a rider.  for example,
                   "unmount man"

        FOLLOW   - takes two arguments, with the format
                   "follow <follower> <leader>" - makes one mob follow
                   another.  for example, "follow soldier general"

        UNFOLLOW - takes one argument, with the format
                   "unfollow <follower>" - makes a mob stop following
                   another.  for example, "unfollow soldier"

VI. Configuration commands
-------------------------

      CONFIG        - miscellaneous configuration options, takes no
                      arguments

      DISPLAYCONFIG - configures display options, takes no arguments

      CHECKCONFIG   - configures check options, takes no arguments

      ALIAS         - takes two arguments, with the format
                      "alias <alias> [aliased string]" - typing
                      'alias' by itself lists all the defined aliases,
                      typing 'alias <alias name>' displays the
                      definition of the alias (if any), and typing
                      'alias <alias name> <string>' (re)defines the
                      alias as that string.

                      for more information on aliases/variables, see
                      the section below.

      UNALIAS       - takes one argument, with the format
                      "unalias <alias>" - removes the alias specified

      SET           - takes two arguments, with the format
                      "set <variable name> <variable value>" - for
                      instance, typing 'set textedit edit' would create
                      a variable named 'textedit' with the value 'edit'.
                      Typing "set" with no args causes a list of current
                      variables to be displayed.

      UNSET         - takes one argument, with the format
                      "unset <variable name>" - removes the variable
                      specified

      TOGGLE        - takes one argument, with the format
                      "toggle <variable name>" - toggles a boolean
                      variable to the opposite value of what it is now.
                      boolean variables are considered variables
                      containing the text 'true', 'false', 'on', 'off',
                      '1', or '0'.  As with "set", typing "toggle" by
                      itself lists all boolean variables currently
                      defined.

      SETTEMPLATE   - takes three arguments, with the format
                      "settemp <flagname> <temp #> <value>" - basically,
                      this sets a certain flag in a certain template to
                      a certain value.  For more information, see the
                      section below on flag templates.  Typing "settemp"
                      by itself shows a list of non-zero flags defined
                      in all the templates.

      GUILD         - this command simply toggles special guild checking

      HEIGHT        - takes up to one argument, with the format
                      "height [new height]" - if no argument is specified,
                      the current screen height setting is displayed

      WIDTH         - takes up to one argument, with the format
                      "width [new width]" - if no argument is specified,
                      the current screen width setting is displayed

VII. Miscellaneous commands
--------------------------

      WEST/W, EAST/E,      - moves you in that direction (see also info
      NORTH/N, SOUTH/S,      on WALKCREATE variable)
      UP/U, DOWN/D,
      NORTHWEST/NW,
      SOUTHWEST/SW,
      NORTHEAST/NE,
      SOUTHEAST/SE

      GOTO                 - takes one argument, with the format
                             "goto <vnum|keyword>" - if a vnum is
                             specified, jumps you to the room with that
                             vnum.  If a keyword is specified, jumps you
                             to the first object/mob/room title found that
                             contains that keyword.

      AT                   - takes two arguments, with the format
                             "at <what> <command to exec>" - exactly like
                             the Diku equivalent, this command finds the
                             first object/mob that matches the first
                             argument and executes the command in that
                             room.  for instance, "at shaman l shaman".

      FIXFLAGS             - sets all uneditable flags that are not set to
                             "default" values to their default values - i.e.
                             if the IS_NPC bit is not set on a mob, it will be
                             set

      FIXGUILDSTUFF        - turns off object noshow and mob aggro/hunter
                             flags - if the 'CHECKGUILDSTUFF' variable is
                             not set, you are prompted if you really want
                             to execute the command, since it would tend
                             to screw up your zone if it wasn't a guildhall

      DUMPTEXT             - dumps the text file specified in the first
                             argument to the screen (i.e. 'dumptext de.doc')

      DTC/                 - same as DUMPTEXT, but interprets Basternae color codes.
      DUMPTEXTCOLOR

      SHELL                - only available under DOS, loads an instance
                             of the command shell (as determined by the
                             COMSPEC variable).  type 'exit' to return
                             to dikuEdit..

      SAVE/                - saves all changes made to zone
      WRITE

      QUIT/                - exits editor - prompts you if changes have been
      EXIT                   made


VIII. Informational commands
---------------------------

        HELP/?   - takes no arguments, displays a help file - HELP displays
                   the long version, ? displays a short list of all commands

        COMMANDS - takes no arguments, shows the internal list of commands
                   in dikuEdit, three per line

        LIST     - takes up to two arguments, with the format
                   "list <room|exit|obj|mob|objhere/oh|mobhere/mh|quest|shop>
                    [keyword]" - does what you would expect.  if a keyword is
                   specified, operates like 'lookup' command - for exits,
                   a vnum shows only exits that lead to/from that room

        LOOK     - takes one argument - this command can also be used to
                   "look in" objects

        EXITS    - takes no arguments, this command (much like that of
                   dikuMud) shows the titles/vnums of all the exits' destrooms
                   from the current room

        LOOKUP   - takes up to two arguments, with the format
                   "lookup <room|obj|mob|keyword|vnum> [keyword]" -
                   if room, obj, or mob are specified, the appropriate
                   entity type is listed - if keyword is also specified
                   in the second arg, matching is done against it.  if
                   a keyword is specified, matching rooms, objs, and
                   mobs are listed.  if a vnum is specified, ditto.

        WHERE    - takes one argument, with the format
                   "where <keyword|vnum>" - finds all instances of objs/
                   mobs in zone that match keyword/vnum, displaying them
                   onscreen - checks for quests that give the item and
                   shops that sell the item as well

        STAT     - takes at least one argument, with the format
                   "stat <room|obj|mob|zone> [vnum/keyword]" - shows info on
                   specified entity.  for room, if vnum is left out,
                   info on current room is shown.  for zone, second
                   argument is ignored.

        WHICH    - takes at least one argument, with the format
                   "which <room|obj|mob|flagname> [flagname]" - shows which
                   entities have the specified flagname set.  if room, obj,
                   or mob is specified as the first arg, only those entities
                   are checked for the flagname in the second arg.  if a
                   flagname is specified as the first arg, all rooms, objects,
                   and mobs are checked that match that flagname.

                   if an exclamation mark is placed before the flagname, all
                   entities that don't have that flag set are checked for
                   (i.e. "which m !isnpc")

        KEY      - takes one argument, with the format "key [keyword/vnum]" -
                   looks for doors/objects that need the specified key.
                   if keyword is specified, object must exist in zone,
                   otherwise vnum is searched for.  if no argument is
                   specified, all objects with the keyword "key" are
                   listed.

        ZONEEXITS- takes no arguments, displays all exits that lead out of
                   zone.  if 'exit dests of -1 are out of zone?' variable
                   is set, includes exit dests of -1 (go figure, eh).

        VERSION  - displays version info on dikuEdit

        FREESTACK - only available under DOS, lists the amount of space
                    currently available on the stack - not very useful
                    unless you're the guy that wrote the editor, and
                    even then...  shrug

        RECSIZE   - shows the size of most of the internal structures used
                    by dikuEdit..  again, not very useful unless you're
                    the author of dikuEdit, and even then..

        INFO      - probably named too vaguely, but shows the values of
                    several internal values used for the vnum tables


IX. Inventory-related commands
------------------------------

        Note : all inventory commands can use "all" as an argument where
              appropriate, operating on all objects in appropriate location

        INVENTORY - takes no arguments, displays objs/mobs in your inventory

        GET       - takes at least one argument, with the format
                    "get <keyword|vnum> [keyword|vnum]" - picks up a mob/obj in
                    the current room (or a mob/container object if second
                    keyword/vnum is specified), placing it in your inventory and
                    deleting the original - note that when picking up objects/
                    mobs, all objects inside the obj/mob are also copied.

        GETC      - same as GET, but keeps original in room/container/mob

        DROP      - takes at least one argument, with the format
                    "drop <keyword|vnum>" - drops mob/obj, placing it in current
                    room and removing it from your inventory

        DROPC     - same as DROP, but keeps original in inventory

        PUT       - takes two arguments, with the format
                    "put <keyword|vnum> <keyword|vnum>" - first argument is
                    object in inventory to put in obj/mob in room specified
                    in second argument.

                    alternatively, if a vnum is specified, the object is
                    loaded and put into the container automatically.

        PUTC      - same as PUT, but keeps original in inventory

X. Display/Interface Notes
--------------------------

     Some interface stuff -

        Basically, when editing object types, mob types, rooms, etc etc,
        it's all menu-driven.  It's useless to explain it, because it's
        easy to understand.

        One semi-unnoticable feature is the '<', '>', and '/' key stuff in
        the edit room/obj/mob menus - hit < (or ,) and go back an entity, hit
        > (or .) and go forward an entity.  The settings for the entity you
        are "moving away from" are saved.  Hitting '/' allows you to jump to
        a specific entity via a prompt.

        As far as flags, there are some unlisted control keys that do nifty
        stuff.  Control-F/comma (,) turns all flags off, Control-N/period (.)
        turns all flags on, and Control-T/forward slash (/) toggles all flags.

        About the command-line itself - there is a command-line history, so
        up-arrow scrolls through last commands, etc..  Home, end, delete,
        backspace, etc. all work as well (in the DOS version).

    Some display stuff -

        If you're running with a "non-standard" screen size (standard
        in this case being 80x25), you should set the "screenheight" and
        "screenwidth" variables appropriately.  This will cause lists
        to pause at the proper time, instead of pausing too early or
        too late.  Alas, screen width and height are still not truly
        properly implemented (the edit quest and shop screens and a
        few other choice places still assume 25 lines and 80 columns),
        but it doesn't hurt.

        And now the prompt - here is how it may appear onscreen -

            < 23r 32e 43ot 54ol 65mt 76ml >
            <>

        23r means 23 rooms in the zone, 32e = 32 exits, 43ot = 43 obj types,
        54ol = 54 objs loaded, 65mt = 65 mob types, 76ml = 76 mobs loaded

        Exits have two flags displayed after them, separated by a pipe (|) -
        the first flag is the door type, the second is the door state.

        For the door type flag, C means the door is closable, L means the
        door is closable/lockable, and U means the door is closable, lockable,
        and unpickable.  S/B mean the door is secret/blocked.

        For the door state flag, O means the door is loaded open, C means
        the door is loaded closed, and L means the door is loaded closed and
        locked.  S/B mean the door is loaded secret/blocked.

        If an object has the glowing, hum, noshow, buried, invis, transient,
        magic, secret, lit and/or float bits set, corresponding letters will
        be shown before the name of the object when it is lying on the ground
        in a room.  G = glowing, etc.

        Similarly, mobs with the invis, hidden, memory, sentinel, stay zone,
        protector, hunter, scavenger, teacher, wimpy, and/or aggro bits set
        will have I, H, M, S, Z, P, Hu, Sc, T, W, A (aggr all), aE (aggr evil),
        aG (aggr good), aN (aggr neut), aEr (aggr evil races), aGr (aggr
        good races), and/or aO (aggr outcasts) before their name.  Mobs with
        quest/shop info will have Q/Sh before their name.

        Also, after a mob name will be shown a bracketed letter or series of
        letters, which indicate the mob position.  Sl = sleeping, R = resting,
        Si = sitting, St = standing, L = levitated, F = flying, Sw = swimming,
        and if the pos is unrecognized, XX.  Note that the default position is
        shown.

        And finally, all these display options can be toggled on/off from the
        display config menu (detailed below).

XI. Settings, Aliases, and Variables
------------------------------------

    Default settings files/zone-specific settings files -

        All alias/variable/limit/template commands are written/read from
        the .SET file.

        dikuEdit handles settings files like this - first, it reads DE.SET,
        then <zonename>.SET, replacing any redundant variables, aliases, etc
        read from DE.SET.  When saving, <zonename>.SET is written with all the
        current aliases/etc.  In this manner, you can have a 'default settings'
        file and one specific to each of your zones.

        About settings file themselves - .SET files contain one command per
        line, each with the exact same format as their "inside editor"
        counterparts.  When saving, all aliases, variables, etc. are
        automatically written to a file named <zonename>.SET, and when loading,
        this file is read if existant.

        And now, a bit about the default room/object/mob files.  In the same
        manner as the .SET files, first the DE.<extension> default files
        are read, and then <zonename>.<extension>, if existant.  Thus, you
        can have a "default default room", and a default room/obj/mob/exit
        specific to each of your zones.  The extension for default rooms is
        .DWD, default objects .DOB, default mobs .DMB, and default exits .DEX.

    Setting/using aliases -

        Aliases are basically used to make life easier - basically, you define
        an alias (i.e. by typing 'alias er edit room' or having that line in
        one of your .SET files), then use it by typing 'er 1459' or 'er', etc.

        Input at the prompt is checked against aliases before the 'main'
        commands, and input must match exactly (unlike 'main' commands, which
        can be left-matched).

        And, in case it isn't completely clear, any arguments passed to the
        alias are automatically appended, so that 'er 1459' above is expanded
        to 'edit room 1459'.

        In addition, you can stick specific arguments in specific places by
        inserting "%<number>" into the alias.  For instance, suppose there is
        an alias called 'doit' defined as "edit %1 %2 23".  "doit obj blah"
        would thus be "edit obj blah 23".  if it was defined as
        "edit %2 %1 23", we'd get "edit blah obj 23".  you can use %0 to
        have all the arguments inserted.

        You can also reference variables within aliases.  Suppose you have
        'favoriteobj' set to '493'.  An alias defined as 'edit obj
        $favoriteobj' would become 'edit obj 493'.  You can mix and match
        variables and the '%<number>' stuff all you want.  Enjoy.

        Typing 'alias' by itself will show a list of currently defined aliases.
        To delete an alias, type 'unalias <aliasname>'.

    Setting/using variables -

        Setting variables is much like setting aliases.  Typing
        'set showcolor true' would set the value of the variable 'showcolor'
        to 'true'.

        Variables can be referenced from within aliases; how is detailed
        above.

        In addition to being referencable within aliases, variables are used
        to set various internal configurable options, which are listed below
        (all/most of these variables can be set from the 'config',
        'checkconfig', and 'displayconfig' menus, by the way) -

          Boolean variables (set to either 'true' or 'false')

                ZONEPRE - if true, QQ is stuck at the start of each vnum ref as
                          necessary (no longer implemented) (default false)

              VNUMCHECK - if true, checks all vnums on input (default true)

            CHECKLIMITS - if true, checks all limits on obj/mob load commands
                          in .ZON (default true)

         CHECKZONEFLAGS - if true, checks that room zone flags are all set
                          equal to zone number (default true)

       FIRSTOBJEDESCKEY - if true, first edesc created for an object type will
                          have the same keywords as the object itself
                          (default true)

              ISMAPZONE - if true, displays zone as though it is a map
                          (exactly as it shows on Basternae) (default false, is
                          set automatically on map zones [based on vnums])

           SHOWOBJFLAGS - if true, shows certain object flags next to object
                          names when they are lying about in rooms
                          (default true)

           SHOWMOBFLAGS - if true, shows certain mob flags next to mob names
                          when they are milling about in rooms (default true)

             SHOWMOBPOS - if true, shows mob's default position after the mob
                          name (default true)

            SHOWOBJVNUM - if true, shows object vnums in various places (note
                          that vnums are always shown next to objects that
                          are not in the zone's .OBJ file) (default true)

            SHOWMOBVNUM - if true, shows mob vnums in various places (note
                          that vnums are always shown next to mobs that
                          are not in the zone's .MOB file) (default true)

      SHOWMOBRIDEFOLLOW - if true, shows (following ...) and (riding ...)
                          after mob names when looking in rooms.  may be
                          useful for reducing spam (default true)

          SHOWROOMEXTRA - if true, shows "extra" info below room title -
                          room sector and flag info (default true)

           SHOWROOMVNUM - if true, shows room vnum next to room title
                          (default true)

            INTERPCOLOR - if true, interprets dikuMud color codes (&+Y and
                          the like) (default true)

              SHOWCOLOR - if true, shows dikuMud color codes instead of
                          removing them (default false)

             WALKCREATE - toggles "create room walkabout" function - if true,
                          trying to go an invalid direction creates a room in
                          that direction with exits leading to and from
                          current room (default false)

           SHOWEXITDEST - if true, shows destination room vnum next to exit
                          direction (default false)

          SHOWEXITFLAGS - if true, shows exit flags (as detailed above) next
                          to exit direction (default true)

          SAVESTARTROOM - if true, saves vnum of room you last saved zone
                          from in STARTROOM.  when loading, dikuEdit then
                          sticks you in this room (default true)

           SHOWMENUINFO - if true, shows all sorts of useful info in the
                          editing menus for rooms, objs, mobs, and exits
                          (default true)

            IGNOREZONES - if true, ignores the 'S' that indicates the end
                          of the zone file in the .ZON (may be useful in
                          some circumstances) (default false)

        CHECKMOBCLASSEQ - if true, checks that mob can wear eq based on
                          class and anti-class flags.  (default false, because
                          Basternae doesn't check class flags when equipping mobs
                          at zone reset)

         CHECKMOBRACEEQ - if true, checks that mob can wear eq based on
                          race and anti-race flags.  (default false, because
                          Basternae doesn't check race flags when equipping mobs
                          at zone reset)

          CHECKMOBSEXEQ - if true, checks that mob can wear eq based on
                          sex and anti-sex flags.  (default false, because
                          Basternae doesn't check sex flags when equipping mobs
                          at zone reset)

       NEGDESTOUTOFZONE - if true, 'zoneexits' command lists exits with
                          a destination less than 0 as exits leading out
                          of the zone (default true)

     SAVEEVERYXCOMMANDS - if true, enables autosaving every SAVEHOWOFTEN
                          (another variable, described below) commands
                          (including invalid commands, aliases should
                          always be considered one command) (default false)

          Check-related boolean variables

              CHECKSAVE - if true, runs the check command on each save

       NOSAVEONCHECKERR - if true, only saves all files if no errors found
                          with check command

           SAVECHECKLOG - if true, writes all errors to CHECK.LOG

    PAUSECHECKSCREENFUL - if true, pauses every screenful of check errors
                          displayed (default true)

          CHECKLONEROOM - if true, checks for rooms with no exits leading to
                          them and rooms with no exits leading out of them
                          (the same room may have both errors)

       CHECKMISSINGKEYS - if true, checks for exits/objects that require keys
                          that aren't loaded into the zone (or given in
                          a quest, or sold in a shop) at least once

            CHECKLOADED - if true, checks for object/mob types that aren't
                          loaded into the zone at least once

              CHECKROOM - if true, checks for rooms with a misset SINGLE_FILE
                          bit and rooms without descs and some other key
                          stuff

              CHECKEXIT - if true, checks for exits with a door type but no
                          keywords

          CHECKEXITDESC - if true, checks for exits with no descs

               CHECKOBJ - if true, checks for objects of type container that
                          have "closed" bit set but not "closeable" (seems
                          to be a common error) and for objects without
                          keywords and some other key stuff

           CHECKOBJDESC - if true, checks for objects without extra descs

       CHECKOBJMATERIAL - if true, makes sure armor/worn items have the
                          material value set within valid bounds

               CHECKMOB - if true, checks for mobs without keywords and some
                          other key stuff

           CHECKMOBDESC - if true, checks for mobs without descs

             CHECKEDESC - if true, checks all extra descs for no desc/keywords

             CHECKFLAGS - if true, checks all room/obj/mob flags for uneditable
                          flags that are set to their non-default setting

        CHECKGUILDSTUFF - if true, checks various object/mob settings to
                          make sure they are not improperly set for
                          guildhalls

          Non-boolean variables

            MAINZONENAME - contains the "main" name of your zone - extensions
                           are added to this when saving/loading (.wld, etc).
                           this is automatically set when calling dikuEdit,
                           but can be changed inside the editor in case you
                           want to make backups, make massive changes but
                           want to save the pre-changed version, etc

             LASTCOMMAND - stores the value of the last command executed -
                           this is pretty useless as far as the user is
                           concerned (as far as setting it, etc), but what
                           the hell, here it is

                TEXTEDIT - contains name of external ASCII editor used for
                           editing descs/extra descs (default 'edit' ['pico'
                           for Linux])

              MENUPROMPT - contains text shown as menu prompt
                           (default '&+CYour choice, sir? &n')

              MAINPROMPT - contains text shown as first line of main prompt -
                           if value is 'default' (which is, by the way, the
                           default), then the prompt described above is shown.

               STARTROOM - contains vnum of room you were in when you last
                           saved (see SAVESTARTROOM above for more info)
                           (no default)

            SCREENHEIGHT - contains the height of the screen (used for
                           determining when to pause when displaying
                           lists) (default is 25)

             SCREENWIDTH - contains the width of the screen (used for
                           determining when to pause when displaying
                           lists) (default is 80)

            SAVEHOWOFTEN - determines how often zone files are autosaved
                           if SAVEEVERYXCOMMANDS variable is set to true.
                           (default is 10)

XII. Setting/Using Flag Templates and Defaults
----------------------------------------------

        To make setting certain flag values on certain rooms/objects/mobs
        easier, "flag templates" are available.

        Basically, there are five different templates, numbered 0 through
        4, each containing ROOMFLAG, OBJEXTRA, OBJWEAR, OBJAFF1, OBJAFF2,
        MOBACT, MOBAFF1, and MOBAFF2 flags.

        When editing, say, room flags, you can hit one of F1-F5 ('!' through
        '%' for Linux) to set the flags to the values contained in one of the
        templates (F1/! = template 0, F2/@ = 1, etc).  Hitting one of Shift-F1
        through Shift-F5 ('^' through ')' for Linux) sets the template flag for
        the corresponding template to the value currently in the room flag.

        All that you need to know is that each template contains one of each
        flags, so that the keys work on any of the flag editing menus (well,
        okay, not the zone flag menus...  damn).

        You can define the various template flag values from the command-
        line (as detailed in the SETTEMP command above), but it's probably
        much easier to just hit Shift-[Fkey] when you have the flags you
        like.

        And, by the way, if this doesn't make a whole lot of sense, mess with
        it, and you'll see how it works.  ;)

    Default room/object/mob/exit -

        How exactly dikuEdit reads the default info is described above under
        the heading "Default settings files...".

        If default room/object/mob/exit info exists, then new rooms/objects/
        mobs/exits are automatically set to the values of the default.  Thus,
        you can set the default room and exit to a forest description, turn on
        "WALKCREATE" mode, and create a forest with relative ease.

    Inventory -

        You can pick up mobs and objects and drop them throughout the zone,
        which is very handy for populating your zone.  Picking up a mob or
        object also copies whatever objects are in the obj, or equipped and
        carried by the mob.

        Thus, you can pick up a copy of a guard mob that is in several places
        in the zone and that is equipping a sword and shield, drop copies
        about, and have a guard force ready-made.


XIII. Command-line Options
---------------------------

        All command-line options -

          * override the DE.SET and zone-specific .SET files
          * can start with / or -
          * are specified after zone name (i.e. 'de forest -vc -ll=6942')


            READDIKUDIR,    - read files from directories as laid out
            RDD, D            in Diku areas/ directory - wld/, obj/, etc.

            R               - reads only the .wld file, going straight to
                              room-editing mode

            O               - reads only the .obj file, going straight to
                              obj-editing mode

            M               - reads only the .mob file, going straight to
                              mob-editing mode

            LL=<limit>      - sets the limit for the internal vnum lookup
                              tables - it defaults to 100,000 entries, which
                              should be more than enough, but if you need/
                              want/enjoy having more, go crazy.

            IZS,            - sets "ignore zone S" variable (described above)
            IGNOREZONES

            NVC, NOVC,      - turns off the vnum checking (described above)
            NOVNUMCHECK

            VC, VNUMCHECK   - turns on vnum checking

            NLC, NOLC,      - turns off limit checking (described above)
            NOLIMITCHECK

            LC, LIMITCHECK  - turns on limit checking

            NECC, NOECC,    - turns off mob class checking when equipping
            NOEQCLASSCHECK    mobs

            ECC,            - turns on mob class checking when equipping
            EQCLASSCHECK      mobs

            NZFC, NOZFC,    - disables code that checks that all room
            NOZONEFLAGCHECK   zone flags are equal to the zone number

            ZFC,            - enables above-mentioned code
            ZONEFLAGCHECK

XIV. Last Words
----------------

    Congratulations, you survived the DikuEdit documentation!  Treat yourself to
    a beer or a nice cookie and a glass of milk.  You deserve it for all your hard
    work getting through this.

    If you find any bugs or have any questions/suggestions, use the Github issue
    system at https://github.com/Xangis/magma
    
    This version of DikuEdit was originally written
    by Michael Glosenger (Tavril) and is now maintained by the Basternae staff.

    The latest version of DikuEdit can be found at https://github.com/Xangis/magma

    By the way, this editor requires a 386+, and probably about four megs of
    memory or so (more for big areas).  And, DOS or a DOS shell.
