Zone Overview

The File  - Header information

Rooms - Doors and Portals

Loading Objects

Loading Mobs

The general format of zone commands is:

<command type> <if-flag> <some other arguments .....>

if flag


Every zone command has an if-flag. This flag is a 1 or a 0, and tells the mud when to execute the command. 

0 Always execute this command
1 Only execute this command if a previous command succeeded.  Normally this is the command JUST BEFORE THIS ONE in the zone file, but for objects given to or equipped by mobs, the command depends on the success of the previous mob-load command.   This MAY be true for multiple objects placed in containers (we haven't tested this yet).

 
Here's an example:

    M 0 21319 1 21342    * load Tuta
    E 1 21323 25 1       * equip moonstone ring on right finger
    M 1 21327 1 21342    * load the priestess
   
In this example, Tuta will always load as long as there is not already a Tuta loaded. If Tuta loads, there is a 25% chance that her ring will load.  If the ring loads, then the priestess will also load.  This can work nicely when you need a "guard" situation - a mob that guards another mob's personal belongings :) Removing the command to equip the ring would set up a situation where the priestess only loads if Tuta loads.

If you're still confused, don't worry as it will get clearer as you work on your zone.
 
Max existing and %repop are explained in the sections dealing with mob zone commands and object zone commands.

Doors

You must set both sides of all doors in your zone using the D command.   Closing the north exit of one room does not automatically close the south exit of the room on the other side of the door.

D: set the state of a door
Format: D <if-flag> <room vnum> <exit num> <state >

Room vnum is the virtual number of the room with the door to be
set.

Exit num State
0 North
1 East
2 South
3 West
4 Up
5 Down
0 Open
1 Closed
2 Closed and locked

 

Randomizer
R: Randomizes exits from a room. This command is used in the Ultima mazes as well as the Shadow Guardian forest to make the maze different every time. This also has the effect of making the zone feel larger.  Use this command with caution, as players hate it.

Syntax:

R <if-flag> <room vnum> 4

We have no documentation on this command.  Apparently it takes the defined exits for the room and switches them so that, for example, if you intend to go south you may really be going north.

Example:

#101 #102 #103
#104 #105 #106
#107 #108 #109

The above diagram shows room #105 as it is defined in the WLD file.  It exits north to 102, east to 106, south to 108 and west to 104.  Assuming this command in the zone file:

R 0 105 4

If you stand in the room and type "Exits", you may see that this is the current configuration:

#101 #108 #103
#102 #105 #104
#107 #106 #109

With each zone reset, the arrangement of rooms around 105 changes.  If you'd like to experiment, feel free to do so using either 3.wld/3.zon or your own wld and zone files. Please let the World group leader know if you plan to do this.

Style to use

There are two separate styles used in Elite Zone files, when organizing them. Choose one and stay with it for the zone you do.  The first is to organize by room. The second is to organize by type.

Organizing by room
When organizing by room, you load everything together for each room and adjust your door in that room. This allows a builder fast reference when you are looking for something and you know where it's supposed to be loaded.

Organizing by type
The second method means that you load all of one type at the same time, so you know where everything is. You load all the mob of one type first with all of their stuff on them. You load all the remaining equipment that is not loaded on mobs -- by type (all the fountains, all the containers, all the weapons, etc.). The last thing is open/close all the doors two by two, which means, you do both sides to the door together.

Regardless which method you use, comment what it is you are loading or doing in English so that others may help fix or update the zone. If the zone file can't be easily figured out, one solution is to write another and throw the old one away.

If you wish to put any special zone information (such as your name and the date you wrote the zone), please do it at the top of the command list so it follows the header information.  This is so anyone needing the information can find it in the same spot. If you have anything special that one needs to know, this is also a good spot for it.

It is very important that your comments do not come between the name of your zone and the top room number! Doing this will cause errors in your zone.

Comments may follow the zone command after a few spaces, e.g. :

M 0 6646 10 6797    The wicked gremlin in the queen's parlor


Zone Rules and Helps

Use Excel or a similar spreadsheet program to set up your zone file ... you can then sort to your heart's content by room or by mob.  When you add objects, add a row of numbers along the far left (or right) so you can get the rows back in the right order.
If you don't have Excel, use TextPad and set it to block mode. You can sort the zone by mob or by room ... until you add objects :)
Open all doors at the top of the file, then lock them the line after the key is loaded.   Use an if-flag of 1 here ... if the key was loaded, then lock the door.
Remember, a functioning door is a door from both sides, and needs to be closed from both sides. Thus, 2 door commands for each door.
The 'P' command gets confused if you try to load multiple objects into multiple containers IF the containers are all the same object. The solution is to copy the container over into the .obj file with a different vnum.
Comment your zone files as much as possible. Doing this makes it much easier to debug your zone file if there happens to be an error in it. If you do not comment your zone file, it will be up to you to fix any problems that may come up, and if this is your first area, that may be a very difficult task! Don't just put your comments at the top of the zone command list, make comments following the actual commands also. Just make sure the comment do not cause a linewrap as plain text, without the necessary *-marker will cause the file to fail.