Rooms - Doors and Portals
Loading Mobs
The general format of zone commands is:
<command type> <if-flag> <some other arguments .....>
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.
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.
|