Go to the first, previous, next, last section, table of contents.


Building and Creating Objects

There are a number of commands available to players for building new parts of the MOO. The primary means for players to extend the MOO is for them to create new objects with interesting behavior. There are convenient commands for creating and recycling objects and for keeping track of the objects you've created. The following commands are used in the creation of objects:

@dig
- conveniently building new rooms and exits
@create
- making other kinds of objects
@recycle
- destroying objects you no longer want
@quota
- determining how many more objects you can build
@count
- determining how many objects you already own
@audit
- listing all of your objects
@classes
- listing all of the public classes available for your use
@move
- moving your objects from place to place

They are described in detail in the following paragraphs.

Command: @create class-name named "names"
Command: @create parent-object named "names"
The main command for creating objects other than rooms and exits, for which `@dig' is more convenient. The first argument specifies the parent of the new object: loosely speaking, the kind of object you're creating. class-name is one of the four standard classes of objects:

As time goes on, more standard classes may be added. If the parent you have in mind for your new object isn't one of these, you may use the parent's name (if it's in the same room as you) or else its object number (e.g., #1234). The names are given in the same format as in the `@rename' command, as follows:

name:alias,...,alias

or alternatively

name-and-alias,alias,...,alias

Command: @describe object as description
Sets the description string of object to description. This is the string that is printed out whenever someone uses the `look' command on object. To describe yourself, use `me' as the object. For example, if blip types the following:
@describe me as "A very fine fellow, if a bit on the short side."

People who type `look blip' now see this:

A very fine fellow, if a bit on the short side.

The description of an object is kept in its .description property. For multi-line descriptions, .description can be a list of strings.

Command: @rename object to name:alias,...,alias
Command: @rename object to name-and-alias,alias,...,alias
Command: @rename object:verb to new-verb-name
The first two forms are used to change the name and aliases of an object. The name is what will be used in most printed descriptions of the object. The aliases are the names by which players can refer to the object in commands. NOTE that the name of a player may not include spaces and that no two players may have the same name at the same time. For example, if blip names his dog using the following command:
@rename #4237 to "Rover the Wonder Dog":Rover,dog

Now we'll see `Rover the Wonder Dog' if we're in the same room as him and we can refer to him as either `Rover' or just `dog' in our commands, like `pet dog'. The third form of the @rename command is for use by programmers, to change the name of a verb they own. If the new-verb-name contains spaces, the verb will have multiple names, one for each space-separated word.

Command: @recycle object-name-or-number
Destroys the indicated object utterly and irretrievably. Naturally, you may only do this to objects that you own.
Command: @quota
Each player has a limit as to how many objects that player may create, called their quota. Every object they create lowers the quota by one and every object they recycle increases it by one. If the quota goes to zero, then that player may not create any more objects (unless, of course, they recycle some first). The `@quota' command prints out your current quota. To get a larger quota, talk to a wizard. They will take a look at what you've done with the objects you've built so far and make a determination about whether or not it would be a net gain for the MOO community if you were to build some more things. If so, they will increase your quota; if not, they will try to explain some ways in which you could build things that were more useful, entertaining, or otherwise interesting to other players. The quota mechanism is intended to solve a long-standing problem in many MUDs: database bloat. The problem is that a large number of people build a large number of dull objects and areas that are subsequently never used or visited. The database becomes quite large and difficult to manage without getting substantially more interesting. With the quota system, we can make it possible for players to experiment and learn while simultaneously keeping random building to acceptable levels. It is expected that some will find the quota system distasteful or otherwise controversial. It was invented by Haakon and he is always interested in hearing your constructive comments, suggestions and protests.
Command: @count
Prints out the number of objects you own. Do not be surprised if this is one larger than you think it should be: remember that your player object is owned by you as well, even though you didn't create it in the usual way.
Command: @audit
Command: @audit player
Command: @audit player from number
The first form prints out a list of every object you own, giving each one's name and object number. The second form does the same for the named player. The third form does the same for the named player, but begins searching the database with the numbered object. player may be replaced by "me" to restrict the audit of yourself. This can be useful if you know the player does not own any objects below a certain number (typically the player's number itself). Interestingly, due to a quirk of the code, "@audit me from me" will show you objects owned by you starting with your object number, an unexpected shorthand.
Command: @classes
Command: @classes class-name ...
The wizards have identified several useful classes of objects in the database. The `@classes' command is used to see which classes exist and what their member objects are. The first form simply lists all of the defined classes along with short descriptions of the membership of each. The second form prints an indented listing of that subset of the object parent/child hierarchy containing the objects in the class(es) you specify.
Command: @move thing to place
Move the specified object to the specified location. This is not guaranteed to work; in particular, the object must agree to be moved and the destination must agree to allow the object in. This is usually the case, however. The special case where thing is `me' is useful for teleporting yourself around. If @move doesn't work and you own the room where the object is located, try using `@eject' instead.
Command: @eject object
Command: @eject object from place
This command is used to remove unwanted objects from places you own. Players thus removed are unceremoniously dumped in the default player starting place. Other kinds of objects get thrown into #-1 or $nothing. Unlike `@move', `@eject' does not check to see if the object wants to be moved, and with the destination being what it is, there is no question of the destination refusing the move, either. Generally, you should only resort to `@eject' if `@move' doesn't work. The first form of the command removes the object from the current room. The second form removes the object from the specified place (which, in most cases, you'll have to specify as an object number). In either case, this command only works if you own the room/entity from which the object is being ejected. The form of the command
@eject ... from me

suffices to get rid of some unwanted object in your inventory.

On any given room, one may user the following commands to set the messages used for ejection:
Command: @ejection message
This message is Printed to player issuing the @eject command. The default message is `You expel %d from %i.'
Command: @oejection message
This message is Printed to others in the room from which the ejection occurs. The default message is `%D is unceremoniously expelled from %i.'
Command: @victim_ejection message
This message is Printed to the victim being ejected. The default message is `You have been expelled from %i.'

Rooms and Exits

Rooms and exits are the stuff from which the landscape of the virtual world is created. A room is generally an instance of the generic room class, also referred to as $room. An exit is an instance of the generic exit class, $exit. An exit can be thought of as a one way tunnel leading from one room to another. If you wish to have a two way exit, you have to use two exits: one going from the source to the destination and one going from the destination to the source. The following commands are used for creating and managing rooms and exits:

Command: @dig "new-room-name"
Command: @dig exit-spec to "new-room-name"
Command: @dig exit-spec to old-room-object-number
This is the basic building tool. The first form of the command creates a new room with the given name. The new room is not connected to anywhere else; it is floating in limbo. The `@dig' command tells you its object number, though, so you can use the `@move' command to get there easily. The second form of the command not only creates the room, but one or two exits linking your current location to (and possibly from) the new room. An exit-spec has one of the following two forms:
names
names|names

where the first form is used when you only want to create one exit, from your current room to the new room, and the second form when you also want an exit back, from the new room to your current room. In any case, the names piece is just a list of names for the exit, separated by commas; these are the names of the commands players can type to use the exit. It is usually a good idea to include explicitly the standard abbreviations for direction names (e.g., `n' for `north', `se' for `southeast', etc.). DO NOT put spaces in the names of exits; they are useless in MOO. The third form of the command is just like the second form except that no new room is created; you instead specify by object number the other room to/from which the new exits will connect. NOTE: You must own the room at one end or the other of the exits you create. If you own both, everything is hunky-dorey. If you own only one end, then after creating the exits you should write down their object numbers. You must then get the owner of the other room to use `@add-exit' and `@add-entrance' to link your new exits to their room. For example,

@dig "The Conservatory"

creates a new room named "The Conservatory" and prints out its object number.

@dig north,n to "The North Pole"

creates a new room and also an exit linking the player's current location to the new room; players would say either `north' or `n' to get from here to the new room. No way to get back from that room is created.

@dig west,w|east,e,out to "The Department of Auto-Musicology"

creates a new room and two exits, one taking players from here to the new room (via the commands `west' or `w') and one taking them from the new room to here (via `east', `e', or `out').

@dig up,u to #7164

creates an exit leading from the player's current room to #7164, which must be an existing room.

Command: @add-exit exit-object-number
Add the exit with the given object number as a conventional exit from the current room (that is, an exit that can be invoked simply by uttering its name, like `east'). Usually, `@dig' does this for you, but it doesn't if you don't own the room in question. Instead, it tells you the object number of the new exit and you have to find the owner of the room and get them to use the `@add-exit' command to link it up.
Command: @add-entrance exit-object-number
Add the exit with the given object number as a recognized entrance to the current room (that is, one whose use is not considered teleportation). Usually, `@dig' does this for you, but it doesn't if you don't own the room in question. Instead, it tells you the object number of the new exit and you have to find the owner of the room and get them to use the @add-entrance command to link it up.
Command: @exits
Prints a list of all conventional exits from the current room (but only if you own the room). A conventional exit is one that can be used simply by uttering its name, like `east'.
Command: @entrances
Prints a list of all recognized entrances to the current room (but only if you own the room). A recognized entrance is one whose use is not considered to be teleportation.


Go to the first, previous, next, last section, table of contents.