Splash  
About WOCNews, Help, etc.Build AreasContributor CreditsUseful Links

Login

Build Zones
Build Rooms
Build Shops
Build Mobs
Build Objects

Search Areas
Building Guides
BlobbieScript

Documents
  

Most of these documents are EXTREMELY outdated and are kept more for historical reasons than informative reasons. Most outdated is the building information since Carnage no longer runs on a DIKU data system but rather uses a custom XML structure. Despite all this the information can be very useful when designing your area.


   *******************************************************
    DB-ZON.DOC  -  documentation for zone database files
    *******************************************************


2.3. The zone-file
==================

NEW STYLE:

   For those of you familiar with old-style diku zones, the main difference
between the old style and the new style is that the new style does not
require you to keep track of the max number of monsters/objects of each type
existing in the world.  Each item in the new style zone is loaded once at
first boot, then again either when that monster/item leaves the game (killed/
purged/rented/etc.) or when it is conditionally called by a preceding zone
command.  See the section on <# reps> below for details on how this works.

a) The top room-number of the zone. A room belongs to a zone X if:

          zone[X-1].top < virtual_room_number <= zone[X]

for X > 0. Rooms belong to zone 0 if their number is between 0 and the
top of zone 0.

b) The LIFESPAN of the zone. When the age of the zone (measured in minutes
after last reset) reaches this number, the zone is queued for reset. The
zone is then reset as soon as possible (more or less), depending on the
value of the RESET_MODE-variable.

c) The RESET_MODE. This may take one of three values:

  0: Don't reset the zone at all. In this case, the age of the zone is never
     updated, and it will never be queued for reset. Thus, the value of the
     lifespan-field is effectively ignored.

  1: Reset the zone as soon as it is deserted, ie as soon as there are no
     players located within the zone.

  2: Reset the zone no matter who or what is in it.

d) The COMMANDS. This is a series of commands to execute at reset.

          Each command consists of a letter, identifying the command-type,
   followed by three or four arguments. The first argument, common to all the
   commands, is the <# reps> (number of repetitions).  If the <# reps> is
   greater than 0, then that command and all succeeding commands with <#
   reps> < 1 are repeated that many times.  If <# reps> is 0, that command is
   executed only if the previous command was executed AND the object has been
   removed from the game (except for the first boot, at which time it is
   loaded originally).  You would use 0 for items you only want to have ~1 of
   in the game at a time (~1 since it doesn't actually count them, just that
   it won't load a new one if _the_one_previously_loaded_by_this_command_ is
   still in the game).  If <# reps> is -1, then EVERY time the previous
   command is executed, this command will be executed as well.  This is
   useful for normal equipment that should be loaded every time a monster is
   loaded, no matter how much of that same equipment is still in the game.

       For example, to load 3 guards, which you want to always have the same
   basic equipment, plus you want one to have a key which you don't want to
   load again unless the last one has been removed from the game, you would
   do it as follows:
    <cmd> <# reps> etc.
    M 3 etc. (guards)
    O -1 etc. (breast plate)
    O -1 etc. (long sword)
    O -1 etc. (shield)
    O 0 etc. (key)

   The commands:

    M (load a mobile):
           Format: 'M' <# reps> <mob nr> <room nr> <mob group num>

       mobile nr and room nr should be self-explanatory.
       NOTE:  You MUST put a number in the <mob group num> field.  If you
           don't want the NPC to be in any group, use 0.  If you do want
       to use NPC groups, you should, but    don't strictly have to, use
       mob group numbers roughly according to the numbers of the mobs
          themselves.  For example, if you are given mob #s 1700-1799,
       you should use group #s 1700-1799.  _But they don't have to
       directly correspond_.  You may have mobs 1700, 1701, 1702,
       1703 all in group 1700, and mobs 1704, 1705, and 1706 in group
       1701, etc.

    O (load an object):

       Format: 'O' <# reps> <object nr> <room nr>

      Load an object and place it in a room.    (NOT -1)

    G (give object to mobile):

       Format: 'G' <# reps> <object nr>

      Loads an object, and gives it to the last monster referenced (ie. by the
      M-command).

       Of course, this command doesn't make sense if a new mobile+object
       pair has not just been created, which is where the if-flag comes
       in handy.   :)

    B (add buff item)

      Format: 'B' <if-flag> <object num> <odds in 100>

      Adds the specified item to the target mob's special affects inventory. The
      odds can be used to randomize the load. For instance setting the odds to
      50 means that 50 in 100 resets will load the affect item.

    X (equip mobile with object)

      Format: 'X' <if-flag> <object num> <odds in 100>

      Works just like 'E' except that a 100 face dice is rolled and it must
      roll under <odds in 100> for the object to be loaded and equipped on
      the target mob.

    Y (give object to mobile)

      Format: 'Y' <if-flag> <object num> <odds in 100>

      Works just like 'G' except that a 100 face dice is rolled and it must
      roll under <odds in 100> for the object to be loaded and given to the
      target mob.

    E (object to equipment list of mobile)
        Format: 'E' <# reps> <object nr> <equipment position>

     Loads object and places it in the Equipment list of the last monster
    referenced.

    Note that it is NOT necessary to precede this command with a 'G' command.
    Equipment position is one of:
      WEAR_LIGHT      0
      WEAR_FINGER_R   1
      WEAR_FINGER_L   2
      WEAR_NECK_1     3
      WEAR_NECK_2     4
      WEAR_BODY       5
      WEAR_HEAD       6
      WEAR_LEGS       7
      WEAR_FEET       8
      WEAR_HANDS      9
      WEAR_ARMS      10
      WEAR_SHIELD    11
      WEAR_ABOUT     12
      WEAR_WAISTE    13
      WEAR_WRIST_R   14
      WEAR_WRIST_L   15
      WIELD          16
      HOLD           17


    P (put object in object):
       Format: 'P' <# reps> <object_nr1> <object nr2>

        Loads object1 and places it in object2.

    D (set state of door)
        Format: 'D' <# reps> <room nr> <exit nr> <state>

        State being one of:
        0: Open.
        1: Closed.
        2: Closed and locked.

        NOTE:     For doors, <# reps> == 1 indicates that the door should
            be opened/closed/locked EVERY time the zone is reset.
            <# reps> == 0 only opens/closes/locks the door when
            the game is first booted, and -1 does it every time the
            zone is reset IF the previous command was executed.

    R (remove object from room)
     Format: 'R' <# reps> <room_nr> <object_nr>
        Currently may not do anything.  If you need to use it, send me
        mail.


   More commands will probably be needed, and will be added as required.



The Worlds of Carnage MUD is a non-profit, fantasy oriented, text-based game that is played over telnet. We are devoted to providing a social medium in which people can have fun while immersing themselves in a game that reads like a book. You can connect by clicking here or if that fails then here. This site is maintained and hosted by Robert Cummings, A.K.A Blobule and is powered by InterJinn, a PHP based multi-tier application framework connected to a MySQL backend and served via an Apache web server. The Worlds of Carnage are often recognized via the following aliases: Carnage; WoC; WoC MUD; Carnage MUD; CarnageMUD; WoCMUD. All submissions become the property of Robert Cummings where the submitter holds copyright. If you do not want to give ownership, then do not submit.