Making Reset Lists
By
Tank the Life Bringer at Dawn of Demise
(tdod.org 4000)
Without a reset list, an area wouldn't refill itself when it came time for "repop". The reset list is the file the MUD uses to set everything in the area back to where it should be, restocks the mobs, and resets all the doors.
Every area MUST have a reset list. There are three ways to do this online:
INSTAZONE
INSTAROOM
RESET
Any time you make a new mob, object, or exit with a door, you must add a reset for it or it will not repop when the area resets itself.
INSTAZONE or INSTAZ
Syntax: instazone
Syntax: instazone nodoors
Instazone will write (or rewrite) the resets for the entire area based on the current positions of your mobs and objects. All you have to do is place each mob in its proper room, wearing what it should be wearing, carrying what it should be carrying, and objects in their proper places, or in their proper containers, and doors in their proper states, (open, closed, locked). It's kind of like taking a "snapshot" of your proto area; everything will be set on the reset list as it appears in the area.
If you've left a door open, it will always repop as open. If you've forgotten to add a mob, it won't appear unless you either manually add it, or do another Instazone.
The option of "nodoors" means no door resets will be created.
**NOTE**
This command will wipe out ALL existing resets! Do not use this command after you have added your own resets with 'reset add'. The recommended procedure is to use instazone, then use the 'RESET' command to add any special resets, and NOT use instazone again.
INSTAROOM or INSTAR
Syntax: instaroom
This command is the same as instazone, but is room-based instead of area-based, this command will write (or rewrite) the resets for the room you are in. This command is most useful for making small modifications to an existing reset list.
**WARNING:**
Both "Instazone" and "Instaroom" have a problem when it comes to handling nesting objects,
I.e.: Objects that repop within objects on the ground.
The best way to handle these objects is to add them manually with RESET.
RESET
Syntax: reset <primary command> [secondary command] [parameters]
This command is used to display, edit, delete, add, insert, and perform resets in an area.
Valid primary commands are; list, edit, delete, add, insert, place, area, remove, mobile, object, hide, trap, bit, and random.
**WARNING**
When adding resets using reset, the order that resets are put in is VERY important. You cannot equip a mobile with an object before putting the mobile into a room. Likewise, you cannot put an object into a container until the container is put into a room.
Primary Reset Commands and Parameters
LIST
Syntax: reset list [start number] [end number]
This will display the list of resets currently set:
The area that is assigned to you
or
The area you are in currently
(in that order).
If [start number] and [end number] are not specified, all resets will be shown.
Ex. reset list 1 10
1) (object) stone pale blue (5426) -> Main Street (5402) [1]
2) lamia beast (5401) -> A Garden Path (5403) [20]
3) long dagger slim (5438) -> lamia beast (wield) [150]
4) lamia beast (5401) -> A Garden Path (5404) [20]
5) long dagger slim (5438) -> lamia beast (wield) [150]
6) lamia beast (5401) -> A Garden Path (5405) [20]
7) long dagger slim (5438) -> lamia beast (wield) [150]
8) (object) stone scarlet blue (5427) -> A Garden Path (5405) [1]
9) lamia beast (5401) -> A Garden Path (5406) [20]
10) long dagger slim (5438) -> lamia beast (wield) [150]
EDIT
Syntax: reset edit <number> <secondary command> <parameters>
Allows you to edit one line of resets, if you know the reset number. The reset number can be found using the ‘reset list’(see above.)
In the above example reset 3 is:
3) long dagger slim (5438) -> lamia beast (wield) [150]
Valid <secondary command> and their related <parameters> will follow in the section ‘Secondary Reset Commands’.
INSERT
Syntax: reset insert <number> <secondary command> <parameters>
Allows you to insert a reset before the reset number specified. The inserted reset becomes reset <number>. All following reset numbers are increased by 1.
Ex. reset insert 3 <secondary command> <parameters>
3) inserted reset info would be here
4) long dagger slim (5438) -> lamia beast (wield) [150]
Valid <secondary command> and related <parameters> will follow in the section ‘Secondary Reset Commands’.
ADD
Syntax: reset add <secondary command> <parameters>
Allows you to add a reset to the END of the reset list.
Valid <secondary command> and related <parameters> will follow in the section ‘Secondary Reset Commands’.
DELETE
Syntax: reset delete <start number> [end number]
Allows you to delete one or more resets. If <start number> is stated without [end number] only <start number> reset will be deleted.
AREA
Syntax: reset area
This will reset:
The area that is assigned to you
or
The area you are in currently
(in that order).
SECONDARY RESET COMMANDS
I’m going to do a little something different here. I’m going to insert this section here since insert, add, and edit all use this information. More primary commands follow this section.
MOB <mobile vnum> <room vnum> [limit]
This loads a mobile into a room. The limit is how many of this mob vnum can exist at any one time in the mud. No more copies of this mob will repop until the number of copies drops below the [limit].
OBJ <object vnum> <room vnum> [limit]
This loads an object into a room. The limit is how many of this object vnum can exist at any one time in the room vnum. No more copies of this object will repop until the number of copies drops below the [limit].
GIVE <object vnum> [limit]
This reset gives the object vnum to last loaded mobile.
(not sure about [limit] here though)
EQUIP <object vnum> <wear position> [limit]
This will equip object vnum in <position> (see wear position below) on last loaded mobile
Wear positions for equip (use number):
light
finger1
finger2
neck1
neck2
body
head
legs
feet
hands
arms
shield
about
waist
wrist1
wrist2
wield
hold
dual_wield
ears
eyes
missile?
PUT <object vnum1> <object vnum2>
This puts <object vnum1> into <object vnum2>
DOOR <room vnum> <door dir> <state>
This resets a door, located in <room vnum> leading in <door dir> (see door directions below) to a certain state (see state below).
Door direction for door(use number):
North 0 N Northeast 6 NE
East 1 E Northwest 7 NW
South 2 S Southeast 8 SE
West 3 W Southwest 9 SW
Up 4 U Somewhere 10 ?
Down 5 D
State:
0-open and unlocked, 1-closed and unlocked, 2-closed and locked
RAND <room vnum> <last door dir>
This randomizes a range of exits
TRAP <vnum> <type> <charges> <flags>
This sets a trap.
VNUM - The vnum of either the room or object to be trapped.
TYPE - The type of trap.
Number | Description Number | Description
--------+------------------ --------+------------------
1 | Poison gas 8 | Flame
2 | Poison dart 9 | Explosion
3 | Poison needle 10 | Acid Spray
4 | Poison dagger 11 | Electric Shock
5 | Poison arrow 12 | Blade
6 | Blindness gas 13 | Sex change spell
7 | Sleeping gas
CHARGES- The number of charges this trap should contain.
FLAGS- Flags specifying the characteristics of the trap:
Flag | Description
--------+---------------------------------------------
ROOM | Trap is in a room
OBJ | Trap is on an object
ENTER | Trap is triggered by entering the room
LEAVE | Trap is triggered by leaving the room
OPEN | Trap is triggered by opening
CLOSE | Trap is triggered by closing
GET | Trap is triggered by getting the object
PUT | Trap is triggered by putting the object
EXAMINE | Trap is triggered by examining the object
PICK | Trap is triggered by picking the object
UNLOCK | Trap is triggered by unlocking the object
NORTH | Trap is triggered by moving north
SOUTH | Trap is triggered by moving south
EAST | Trap is triggered by moving east
WEST | Trap is triggered by moving west
UP | Trap is triggered by moving up
DOWN | Trap is triggered by moving down
HIDE <object vnum>
This hides an object
Examples:
reset add mob 1000 1000 1 (Loads mob 1000 into room 1000, limit 1)
reset add obj 1200 1000 5 (Loads obj 1200 into room 1000, limit 5)
reset add give 1000 (Gives obj 1000 to the last mob loaded)
reset add equip 1000 7 (Gives obj 1000 to the last mob loaded and forces it to wear object on legs)
reset add put 1000 1200 (Puts obj 1000 into obj 1200 - Obj 1200
must already exist as last obj loaded)
reset add door 0 1 (Close the north door - door must exist)
reset add rand 3 (Randomize exits n, s, e, w)
reset add hide 1000 (Hide object 1000 - defaults to last obj
loaded if object not specified)
Primary Reset Commands Contd.
(This section still under construction)
My understanding of these resets is shaky at best so take them with a grain of salt.
REMOVE
Syntax: reset remove <#>
Similar to delete except it only allows you to delete one reset by number.
MOBILE
Syntax: reset mobile <mob vnum> [limit] [room vnum]
Same as secondary command MOB. If [room vnum] is not specified current room will have the reset.
OBJECT
Syntax: reset object <object vnum> [limit [room [room vnum]]]
Syntax: reset object <object vnum> give <mob name> [limit]
Syntax: reset object <object vnum> equip <mob name> <location> [limit]
Syntax: reset object <object vnum> put <to_obj name> [limit]
Same as secondary commands OBJ, GIVE, EQUIP, and PUT respectively.
If [room vnum] is not specified current room will have the reset.
HIDE
Syntax: reset hide <object vnum>
Same as secondary command HIDE.
TRAP
Syntax: reset trap <object vnum> <type> <charges> <flags>
Syntax: reset trap room <type> <charges> <flags>
BIT
Syntax: reset bit <set|toggle|remove> door [room vnum] <dir> <exit flags>
Syntax: reset bit <set|toggle|remove> object <obj name> <extra flags>
Syntax: reset bit <set|toggle|remove> mobile <mob name> <affect flags>
Syntax: reset bit <set|toggle|remove> room [room vnum] <room flags>
If [room vnum] is not specified current room will have the reset.
RANDOM
Syntax: reset random <last dir> [room vnum]
If [room vnum] is not specified current room will have the reset.
The #RESETS section
The syntax of this section is:
#RESETS
* <comment:to_eol>
M <:number> <mob-vnum:number> <limit:number> <room-vnum:number>\ <comment:to_eol>
O <:number> <obj-vnum:number> <:number> <room-vnum:number> \
<comment:to_eol>
P <:number> <obj-vnum:number> <:number> <obj-vnum:number> \
<comment:to_eol>
G <:number> <obj-vnum:number> <:number> \
<comment:to_eol>
E <:number> <obj-vnum:number> <:number> <wear_loc:number> \
<comment:to_eol>
D <:number> <room-vnum:number> <door:number> <state:number> \
<comment:to_eol>
R <:number> <room-vnum:number> <last-door:number> \
<comment:to_eol>
S
To reset an area, the server executes each command in the list of reset commands once. Each area is reset once when the server loads, and again periodically as it ages. An area is reset if it is at least 3 area-minutes old and is empty of players, or if it is 15 area-minutes old. At the 14 area-minute mark, each (awake) player in the area is warned of the impending reset. These values are coded into the function 'reset_area' in 'db.c'.
An 'area-minute' varies between 30 and 90 seconds of real time, with an average of 60 seconds. The variation defeats area timekeepers.
The 'resets' section contains a series of single lines. The backslashes and line splitting above are for readability; they are not part of the file format.
Because of the end-of-line comments, this section is not as free-format as other sections.
The reset commands are:
* comment
M read a mobile
O read an object
P put object in object
G give object to mobile
E equip object to mobile
D set state of door
R randomize room exits
S stop (end of list)
The '*' lines contain comments. The 'S' line is the last line of the section.
Every other command contains four numbers (three for the 'G' command).
The first number is ignored.
The next three (or two) numbers are interpreted as follows:
For the 'M' command:
The second number is the vnum of a mobile to load.
The third number is the limit of how many of this mobile may be present in the world.
The fourth number is the vnum of the room where the mobile is loaded.
For the 'O', 'P', 'G', and 'E' commands:
The second number is the vnum of an object to load.
The third number is ignored.
For the 'O' command the fourth number is the vnum of the room where the object is loaded. The object is not loaded if the target room already contains any objects with this vnum.
The object is also not loaded if any players are present in the area.
For the 'P' command, the fourth number is the vnum of a container object where
the object will be loaded. The actual container used is the most recently
loaded object with the right vnum; for best results, there should be only one
such container in the world. The object is not loaded if no container object
exists, or if someone is carrying it, or if it already contains one of the
to-be-loaded object.
For the 'G' command, there is no fourth number. If the most recent 'M' command
succeeded (e.g. the mobile limit wasn't exceeded), the object is given to that
mobile. If the most recent 'M' command failed (due to hitting mobile limit),
then the object is not loaded.
For the 'E' command, the fourth number is an equipment location. If the most
recent 'M' command succeeded, that mobile is equipped with the object. If the
most recent 'M' command failed, then the object is not loaded.
All objects have a level limit, which is computed by inheritance from the most
recently read 'M' command (whether it succeeded or not) in 'area_update' in
'db.c'. As distributed, an object's level equals the mobile level minus 2,
clipped to the range 0 to 35.
For the 'D' command, the second number is the vnum of a room. The third number
is a door number from 0 to 5. The fourth number indicates how to set the door:
0 for open and unlocked; 1 for closed and unlocked; 2 for closed and locked.
Room exits must be coherent: if room 1 has an exit to room 2, and room 2 has an
exit in the reverse direction, that exit must go back to room 1. This doesn't
prevent one-way exits; room 2 doesn't HAVE to have an exit in the reverse
direction.
For the 'R' command, the second number is the vnum of a room. The third number
is a door number. When this command, the doors from 0 to the indicated door
number are shuffled. The room will still have the same exits leading to the
same other rooms as before, but the directions will be different. Thus, a door
number of 4 makes a two-dimensional maze room; a door number of 6 makes a
three-dimensional maze room.
Use of both the 'D' and 'R' commands on the same room will yield unpredicatable
results.
Any line (except an 'S' line) may have a comment at the end.
CREDITS
I really thank Herne the Hunter for the original help files that I used to create my own help.
Special thanks to Tank, the original author of this document.
All samples and tips have been provided by myself, and other members of the mudding community. If you have any samples or tips you would like to contribute, please send them to minex@tdod.org .
If you would like credit please state the name you want credited, a link to a webpage , email, a mud where you build, and/or its telnet address. You may use any combination you desire. Samples and tips without this information will be listed as anonymous.