MOO Pointers!

Table of Contents

| Return to the INDEX |

MOO pointers #1

CONNECTING and DISCONNECTING

Connect to your local Internet prompt.
At the prompt, use the "telnet" command:

>telnet uhunix.uhcc.hawaii.edu 8888
Your screen will return:

Welcome to SeaMOO!
Type 'connect <name> <password>' to login.

at which you should type connect and your assigned character name and temporary password, e.g.,

connect Wanda abraxas

Your screen will return:

The Nautilus..

You find yourself in a Nautilus shell. Pearlescent walls curve smoothly away...

That's it!! You've arrived.

TO DISCONNECT:

At ANY time, type @quit,

@quit

and you're out.

Once you have connected for the first time, you should IMMEDIATELY do two things:

1) change yourpassword to something obscure to everyone else but memorable for you; and

2) describe yourself!! It is considered a breach of manners in a MOO to leave yourself undescribed -- and it's also nice to give yourself gender or the MOO will think of you as "it."

For the first, you type @password <old password> <new password> so Wanda would type,

@password abraxas lucifer

and the screen would return,

Password set

Note that you can change your password as often as you like -- just make sure you know what it is, because the MOO will keep it a secret from anyone else, including Nemo (arch-old salt, deck scrubber, and keel hauler).

Description

For the second, you type @describe me as "text of your choice . NOTE: This is probably the first long string of text that you will type in the MOO. Fair warning: the MOO treats a carriage return as the signal that you have COMPLETED WHAT YOU ARE DOING. So do NOT HIT RETURN UNTIL you have completely finished typing in your description. The MOO will take care of word wrap in the final product. [If you do mistakenly hit the return, no big deal: the description will simply be set with only half your thought -- you just have to go back and redescribe yourself...]

Back to our example: Wanda could then type

@describe me as "A six foot chartreuse wallaby with an attitude, looking to buff the floors with Barney's purple patootie.

The MOO will return

Description set

Now, if other characters type look Wanda they'll see [or if you type look me],

A six-foot chartreuse wallaby with an attitude, looking to buff the floors with Barney's purple patootie.

Now for Gender, set with the @gender <female|male|neuter> command:

@gender female

to which you'll get the response

Gender set

Please note that you can redescribe yourself as often as you like, and change your gender whenever you want. Identities are *very* mutable in a MOO.

FOR HELP AT ANY TIME, JUST TYPE help or help topic.

MOO pointers #2

COMMUNICATING with other players: basics

Return to the INDEX

say talking to other connected players IN THE SAME ROOM

[from YOU to EVERYBODY NEAR BY]

whisper talking privately to someone in the same room

[from YOU to ONE OTHER near by]

page yelling to someone anywhere in the MOO

[from YOU to ONE OTHER]

whereis locating other players

@who finding out who is currently logged in

EXAMPLES

Say say anything

"anything

[A DOUBLE QUOTE starting whatever you want to say is the short form of the command -- and you do not have to close the quote to complete what you're saying; just hit the return...]

Wanda types

"Love Cafe Kilauea -- but where's my cup of coffee?

she sees on her screen,

You say, "Love Cafe Kilauea -- but where's my cup of coffee?"

others in the SAME ROOM see this on their screens

Wanda says, "Love Cafe Kilauea -- but where's my cup of coffee?"

Whisper

whisper text to player

Wanda types,

whisper Yo, cap'n to Nemo

and Nemo sees

Wanda whispers, "Yo, cap'n" to Nemo

NOBODY else in the room sees ANYTHING.

Page

page player [with text]

Paging is used primarily to attract the attention of a player, or to pass short messages between players in different locations (good for coordinating team activities...). It is NOT intended to be used for conversation.

Say Wanda's in the bar talking to Nemo ('cause that's where he lives) and she wants bob in on the conversation, but doesn't want to wander through the MOO to find him. She types,

page bob

she sees,

Your message has been sent.

and bob sees,

You sense that Wanda is looking for you in the bar.

If Wanda were to type,

page bob with Hey, bob, Nemo and I have some questions...join us.

bob would see,

You sense that Wanda is looking for you in the bar. She pages, "Hey, bob, Nemo and I have some questions...join us."

Effectively demanding that bob wander through the MOO to join them.

Whereis

whereis player

Wanda might, in fact, want to go find bob, but she doesn't know where in the world he (or Carmen Sandiego) is. She types,

whereis bob

and sees

bob is in The Body Bag

Upon which, she reconsiders, because that's not really someplace she wants to go.

@who

And of course it's always nice to know whether you're alone in the MOO, or if someone else is connected with whom you might want to interact.

Wanda types,

@who

and sees on her screen,

player name connected idle time location

bob 2 hours 10 minutes The Body Bag

Nemo 8 days 5 hours The Bar

Miguel 5 min 0 seconds His office

Wendy 11 hours 35 minutes Her office

.......etc.

MOO pointers #3

Return to the INDEX

MOVEMENT: basic

<direction> typing a direction name moves you one room

go <dir, dir, direction> typing go and a sequence of directions moves you quickly through several rooms

home typing home takes you to your home room; for players who do not own any rooms, this is usually the entry room -- in SeaMOO, The Nautilus.

@sethome <room> This registers a room of your choice as your home;

it must be a room you own (have built).

EXAMPLES

Direction <direction>

Merely type the direction in which you want to move. MOO building conventions suggest that potential exits may be north, south, east, west, northeast, northwest, southeast, southwest, or out. In a well-built MOO, out should always take you from a peripheral location to a more central location -- e.g., from someone's office, to a central corridor, to a lobby. In order to move more quickly, most directions may be specified by their first initial: n for north, e for east, ne for northeast, o for out, etc.

In addition, room builders may give the exit a specific name. If they do so, they will specify the names of the exits in the room's description -- e.g., "From here you may type ATRIUM to move to the Garden Atrium, or THEATRE for the Apollo Theatre." In the office buildings in SeaMOO, office entrances are specified by their number and location; Marine B office #1, on the north side of the hallway, would be entered by typing north1, or n1.

Go.

go <direction direction direction direction ...>

But what if you know where you're going, and you want to move quickly through a succession of rooms? Then you can type go <direction direction direction ...> and in essence run through a series of rooms very quickly.

If Wanda wanted to jog in a big circle through SeaMOO starting from the bar, she would type:

go w w s w n n e s e e

and the MOO would return to her screen a long, scrolling description of all the rooms she was running through....needless to say, you have to have a pretty good map in your head of how all the rooms fit together in order to be able to do this [you might want to try it and see if Wanda's memory is correct, and she indeed ends up where she started...].

Home.

home

This is a handy command, especially for a visitor, because if you ever become irretrievably lost, it will take you back to your starting point. For visitors and new players, the default "home" room is the entry room -- which in SeaMOO is The Nautilus.

Wanda types

home

and the screen returns,

You click your heels three times.

and she finds herself back in The Nautilus. Which is strange, because Wanda's been around a while and has built several rooms of her own. She needs to use the next command.

Sethome

@sethome

This command lets you establish your home base somewhere other than the front hall closet (which is what The Nautilus is in the Mother of all MOOs, LambdaMOO). The only qualifier is that the room you choose for your home must be either a room you own, or a room whose owner has granted you permission to use it as your home.

Let's assume that you've built a couple of rooms and want to settle in and make them your sanctuary from the virtual world. Move to the room you want to claim as your home, and type @sethome. If you own the place, you will see: <place you are located> is your new home.

So, say Wanda wants The Hot Air Balloon to be her new home. She scrambles into The Hot Air Balloon, and types

@sethome

and sees,

The Hot Air Balloon is your new home.

If she didn't own The Hot Air Balloon, she would have seen,

This place doesn't want to be your home. Contact Nemo to be added to the resident's list of this place, or choose another place as your home.

MOO pointers #4

Return to the INDEX

OBJECTS: basic

look see description of the room you are in or of an object

read see the writing on an object or note

get/take add an object in a location to your personal inventory

[pick something up and carry it around]; get an object

out of another object that contains it

drop removes an object from your inventory; leaves it in the room

you currently occupy

put puts an object inside another object

give moves an object from your inventory to another player's

inventory the list of objects you are carrying around with you;

they're kind of clinging to you like they're velcro'd into place.

EXAMPLES

Look.

look

look object

look object in object

look always returns a description of the room you are in -- sometimes it is handy, if you've been talking or acting a lot, to type look just to remember a) where you are and b) what the likely exits are. The room description will include the room's name, the actual narrative describing it, and a list of any objects that it contains.

look object returns a description of some object in the room. The first use of this you should make is to type look me. Then you will probably want to entertain yourself by typing look player, to see what other people say they look like.

If, when you enter a room, you see a line at the end of the description that says,

You see a gingham apron, a rusty metal box, and Bobo the clown here.

that means that there are three distinct objects in this room. To get their descriptions, you would type

look apron

look box

look Bobo

and the description would be printed to your screen, like so:

A ruffled pink and white gingham apron, lying crumpled on the floor.

but say you typed look box and got the message,

A rusty old cashier's box.

Contents: three pennies

an intriguing ring

lint

You could then type

look ring in box

and get the more complete description,

An ornate gold ring set with a beautifully carved piece of jade.

And if you ever run across a box, and it DOESN'T offer you a list of its contents, it may

be closed; try open box. THEN look box. But remember to be polite, and to put anything back you pick up or take out, and to close any boxes you open.

Read.

read

When you look at something, you may get a description back that says,

There appears to be some writing on the note......

or, the object may simply be described as having writing on it somewhere. If you think it's likely the object might have writing on it, type read object.

Wanda finds a scrap of parchment lying on the flagstones; she types,

read parchment

and sees the message,

If this were the island of MYST, you'd have found a swell clue here;

unfortunately, this is just a dirty piece of paper...

and she drops parchment like a hot potato. Try read on any likely-looking object....

Get and Take

get/take

Let's say Wanda has left a bowl of soup for Nemo in the bar, knowing he's been working hard and wants lunch. Nemo first types look bowl to see what kind of soup it is and, if he likes African peanut soup, could type

get bowl

or

take bowl

to pick it up. What this does is move the bowl from "inside" the room to "inside" Nemo -- the MOO now considers "bowl of soup" to be part of Nemo's inventory -- the stash of things he's carrying around with him. If you typed look Nemo, you'd see his

usual description, then Carrying: a bowl of soup.

But what if, when Nemo looked at the bowl, it said it contained soup -- and a shiny black bit of something? Gross. To check it out, he could look at the bit in the bowl:

look bit in bowl

and the screen would inform him:

a shiny, blue-black, crunchy-looking housefly

As this is not an acceptable garnish, he could get rid of it:

take bit from bowl

and he'd see,

You remove a shiny black bit of something from a bowl of soup.

and leave it in the bar for someone else:

drop bit

seeing,

You drop a shiny black bit of something.

Note that no-one else will know what he dropped was a housefly unless *they* type, look bit.

So, you can get or take an object that you see, or get or take an object from inside an object that you see. Both these commands add objects to your inventory; if you do not then drop the objects, you will be seen carrying them around with you.

Drop.

drop or throw

drop or throw removes an item from your inventory, and leaves it in the room in which you are located when you type the command.

So, after Nemo has finished enjoying his soup (now sans fly), he types,

drop bowl

and sees,

You drop a bowl of soup.

Now, if anyone were to command look Nemo, his description would no longer be followed with the comment,

Carrying: a bowl of soup

But if anyone looks at the room, or enters the room, the MOO will inform them,

You see a bowl of soup here.

after the description of the room.

throw works the same way.

Return to the INDEX

PUT

put or insert

This command lets you put an object inside a container. Wanda created a container named bowl into which she could put the object named African peanut soup. It will usually be fairly obvious which objects are containers: anything that in real life you might conceivably put something into is probably a container in a MOO. Try putting something into it! Try opening it and looking in it to see if it already contains something. If it's closed and you can't open it, the owner has locked it. Tough for you.

Miguel wanders in and sees Nemo's toolbox lying around; curious, he types,

look in toolbox

and gets

Nemo's Toolbox is closed

in response, so he types

open toolbox

and then, since Nemo has apparently not locked the toolbox,

look in toolbox

and realizes Nemo is shy one Generic Leverage Tool. Miguel just happens to have an extra which he is carrying around in his inventory, so he generously types,

put tool in toolbox

and sees

You put a Generic Leverage Tool in Nemo's Toolbox.

He adds,

close toolbox

so it will be a surprise, and saunters away.

The actual command phrasing is put object in/into container or insert object in container. You may use either put or insert, although the former is more common usage. Again, you are moving the object from your inventory, to the inventory of the container into which you are placing it.

GIVE

give or hand

This command allows you to give other players presents. Or notes and letters. Or litter. Whatever. The usual form is give object to player or hand object to player. This command moves the object from your inventory to the other player's inventory. It does not, however, change the ownership of the given object (whoever made it owns it -- but they could give or hand it to someone else, or drop it, and someone else could take it -- unless, of course, the owner had locked it, rendering it untakeable).

Feeling gallant, and thankful for the delicious soup (if still a little suspicious about the fly), Nemo decides to make Wanda a little thank-you gift: a virtual black-leather Harley Davidson-design motorcycle jacket. In case she drops her virtual bike on the virtual coastal highway. He then goes in search of her, and, finding her in the deli, types,

hand jacket to Wanda

he sees,

You hand a black leather jacket to Wanda.

and she sees,

Nemo hands you a black leather jacket.

If Nemo were to look at Wanda, he would see the Carrying: a black leather jacket message added to her description. The jacket has moved from his personal inventory to hers. If he wanted to see her "wear" the jacket, he would have to create a special verb attached to the object "jacket," as well as appropriate messages to relay the fact that she was wearing it to observers. This is the advanced form of object creation; basic object creation is the next MOO pointer.

Inventory

inventory

This shows you what flotsam and jetsam you've accumulated while walking around the MOO looking at things, and picking things up, and making things and absent-mindedly forgetting you'd made them, and other lunatic behavior. Taking inventory of yourself every now and then helps prevent you from looking like a barnacle-encrusted dinghy, as the Cap'n would say.

At the end of a long day of building, Nemo pops back to the bar for a beer and types,

inventory or in or just i

and sees,

Carrying:

Generic Four-footed Vermin

a crescent wrench

a poi dog named "Itzzakick"

and drops the vermin, the wrench, and the dog, receiving the appropriate messages noting he'd done so, and wonders if he remembered to create a verb enabling the dog to chase the vermin....

Wanda, entering the bar, sees

You see Generic Four-footed Vermin, a crescent wrench, and a poi dog

named "Itzzakick" here.

appended to the usual description of the room, and wonders what else is new.

Return to the INDEX

MOO pointers #5

CREATING OBJECTS: basic

@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

@eject removes unwanted objects from your inventory,

or from rooms that you own

EXAMPLES

Create

@create class-name named "names"

@create parent-object named "names"

@create is the main command for creating objects other than rooms and exits, for

which @dig is more convenient (which is why the entire next section, BUILDING, focusses on it).

In the first use above, you are creating an object as a "child" of four possible hyper-generic objects -- objects that, loosely speaking, cover about anything you might want to create. class-name means that you specify which of these four standard precursor objects you want to use as the "parent" of the object you are going to create. Your choices are: a generic note, a generic letter, a generic thing (and you can't get much more generic than that), or a generic container.

Or, as you would specify them in the command so the MOO would understand:

* $note

* $letter

* $thing

* $container

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 -- that is, if it is some other object you've admired in the MOO -- you may use the parent's name (if it's in the same room as you) or else its object number (e.g., #1234).

So, if Miguel wanted to create a dragon-tailed kite, he might type

@create $thing named a dragon-tailed kite:kite

and would see in response,

You now have a dragon-tailed kite (aka kite) with object number #327 and parent generic thing (#5).

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

The alias is any abbreviated form you want to specify to make typing easier and faster for other players. Obviously, it would be grossly inconvenient to type "a dragon-tailed kite" everytime anybody wanted to do anything with the kite. "kite" being the intuitively obvious short form, Miguel assigned his dragon-tailed kite that alias.

@describe object as description

This command enables users to enter into the MOO database a short narrative which will describe a specific object they've created. The MOO will then call that descriptionas a response to anyone's command to look at the object.. To describe yourself, use me as theobject.

For example, if Miguel types,

@describe kite as "Lacquer-bright, in all the colors of the rainbow, this is a seven-foot-long kite with the head of a Tolkien dragon and a long, triangle-edged, poison green and blue tail.

People who type look kite now see this:

Lacquer-bright, in all the colors of the rainbow, this is a seven-foot-long kite with the head of a Tolkien dragon and a long, triangle-edged, poison green and blue tail.

The description of an object is kept in its .description property.

@rename object to name:alias,...,alias

@rename object to name-and-alias,alias,...,alias

This command changes the name and aliases of an object. The name is what will be used in most printed descriptions of the object -- that is, when the MOO is referring to the object, it will use the full-blown version of the name -- provided you've specified a full-blown name as the name, of course. The aliases are the names by which players can refer to the object in commands, and by convention they are usually shorter, more abbreviated forms for typing convenience. 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 Nemo renames Sinclair's Wind-up Duck as follows,

@rename #8899 to "Sinclair's Amazing Patented Wind-up Duck":wind-up duck, duck

Now we'll see Sinclair's Amazing Patented Wind-up Duck if we're in the same room as the duck, but we can also refer to it as wind-up duck or just duck in commands.

Recycle

@recycle object-name-or-number

Destroys the indicated object utterly and irretrievably. Naturally, you may only do this to objects that you own. The MOO returns the object number to the database for assignment to new objects that are created -- hence the command's name, "recycle." In general, the next new object that gets created will be assigned the lowest empty database number available, so you could see your old object's number re-used fairly quickly.

If Nemo were really tired of Sinclair's Wind-up Duck (which he isn't), he could, hypothetically, type:

@recycle #8899

and he would then see,

Sinclair's Wind-up Duck (#8899) recycled.

and he'd have to create another bath toy.

Quota

@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. Invented on LambdaMOO by Haakon, it is administered on SeaMOO by Nemo, and he is always interested in hearing your constructive comments, suggestions and protests.

Count

@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.

Audit

@audit

@audit player

@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 -- and note, @auditing Nemo will give you a list that will scroll off your screen too quickly to read -- as the creator of SeaMOO's base environment, the arch-old.salt owns a lot of objects.

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.

Move

@move thing to room#

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. It's guaranteed if you own both the object and the place, because then you can be sure that both of them will be agreeable. The special case where thing is me is useful for teleporting yourself around.

Wanda wants to @move Miguel's kite from the bar, to Nemo Plaza, where she can fly it, so she types

@move kite to #98

but she gets this response:

You may only @move your own things.

In a fit of perversity, she @moves the bowl of soup to the Plaza so she can fly it:

@move bowl to #98

and gets this response:

Moved.

She then @moves herself to Nemo Plaza, picks up her bowl of soup, and @moves back to the bar. Life just doesn't get better than this.

If @move doesn't work and you own the room where the object is located, try using @eject instead.

Eject

@eject object

@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, which in SeaMOO is The Nautilus. 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 object from me

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

MOO pointers #6

Return to the INDEX

BUILDING ROOMS: basic

@dig makes a new room, and appropriate entrances and exits

@add-exit adds a specified exit to the current room

@add-entrance adds a specified entrance to the current room

@exits lists conventional exits from the current room;

only works if you own the current room

@entrances lists conventional entrances to the current room;

only works if you own the current room

EXAMPLES

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.

Dig

@dig "new-room-name"

@dig exit-spec to "new-room-name"

@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

Use the first form when you only want to create one exit, from your current room to the new room; use 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, say Nemo wants to create a space to explore chaos and potential; he types,

@dig "Alternate Realities"

and sees,

Alternate Realities (#329) created.

Now he can @move to Alternate Realities if he so desires, using its room number. He's also thinking it would be nice to have some space for pure play, and that a good location would be northwest of Nemo Plaza, beyond the rainforest. Standing in Nemo Plaza, he types,

@dig northwest, nw, maze to "The Games Maze"

and sees,

The Games Maze (#333) created.

Exit from Nemo Plaza (#98) to The Games Maze (#333) via {"northwest", "nw", "maze"} created with id #334.

This command creates a new room and also an exit linking the player's current location to the new room; players would say either northwest or nw or maze to get from Nemo Plaza to The Games Maze. But no way to get back from that room is created.

But the most efficient way to build is to put everything you need in the way of exits, entrances, and room names in at the beginning. Miguel decides it would be swell to have a cabana on the east side of the Beach, so he goes to the Beach and types,

@dig east,e,cabana,c|west,w,out,o to "Miguel's Copascetic Cabana"

and he sees,

Miguel's Copascetic Cabana (#338) created.

Exit to Miguel's Copascetic Cabana (#338) via {"east", "e", "cabana", "c"} created with id #339. However, I couldn't add #339 as a legal exit from the Beach. Get its owner, Nemo to add it for you.

Exit from Miguel's Copascetic Cabana (#338) to the Beach (#233) via {"west", "w", "out", "o"} created with id #340. However, I couldn't add #340 as a legal entrance to the Beach. You may have to get its owner, Nemo to add it for you.

Miguel has created a new room, Miguel's Copascetic Cabana, and two exits, one taking players from the Beach to the cabana (via the commands east or e or cabana or c) and one taking them from the the cabana back out to the Beach (via west or w or out or o). However, he now needs to drop Nemo a line (email "seamoo-l") requesting that he @add-exit, and specifying the room number and exit numbers of the room and exits he's just created. He also needs to @describe #338 as "entertaining and vivid text here. After that, he should set the @leave, @oleave, @arrive, @oarrive messages for the exits -- but that will be covered in the NEXT section of MOO pointers.

In this frenzy of room creation, Nemo and Company have left one room dangling, as it were: Alternate Realities. Right now it's unconnected with any other room in SeaMOO, floating in limbo. Nemo wants to connect it via a transdimensional exit to Nemo Plaza. So he teleports (@move me to #329) to Alternate Realities, and types,

@dig transport,t to #98

and sees,

Exit from Alternate Realities (#329) to Nemo Plaza (#98) via {"transport", "t"} created with id #341.

This has created an exit leading from the current room, Alternate Realities, to #98, which must be an existing room, and is: Nemo Plaza.

Oops. Still needs to create a way to beam up from Nemo Plaza TO Alternate Realities. So, he transports down to Nemo Plaza and improvises,

@dig beam_me_up,beam,b to #329

and sees,

Exit from Nemo Plaza (#98) to Alternate Realities (#329) via {"beam_me_up", "beam", "b"} created with id #342.

NOTE the underlining in "beam_me_up" -- the MOO does not like players or exits to have spaces in their names. Of course, people in the know will simply type "beam" or "b". Both exits are now in place, although un-noted in the landscape of Nemo Plaza -- so only people who've read this manual know that they exist.

Add-exit

@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.

Nemo has heard from Miguel about the need to @add-exit linking the Beach and the cabana, and so goes to the Beach (you have to be IN the room to which you are adding an exit), and types

@add-exit #339

and sees,

You have added #339 as an exit that goes to Miguel's Copascetic Cabana (#338) via east, e, cabana, and c.

The exit is now functional and open for business.

add-entrance

@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.

To complete the link between the Beach and Miguel's Copascetic Cabana, then, Nemo needs to use @add-entrance to acknowledge the entrance to the Beach FROM the cabana. So he types,

@add-entrance #340

and sees,

You have added #340 as an entrance that gets here via west, w, out, and o.

Exits

@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.

Entrances

@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.

MOO pointers #7

Return to the INDEX

BUILDING ROOMS: movement messages

@messages lists all kinds of messages that can be set on the object

@leave message sent to you when you leave a room

@oleave message sent to everybody else in the room

when you leave the room

@arrive message sent to you when you arrive in the next room

@oarrive message sent to everybody else in the next room

when you arrive in the next room

@nogo message sent to you when your attempt to use an exit fails

@onogo message sent to everybody else in the room when your

attempt to use an exit out of that room fails

EXAMPLES

Most objects have messages that are printed when a player succeeds or fails in manipulating the object in some way. Of course, the kinds of messages printed are specific to the kinds of manipulations and those, in turn, are specific to the kind of object. Regardless of the kind of object, though, there is a uniform means for listing the kinds of messages that can be set and then for setting them.

Messages

@messages object

This command prints out all of the kinds of messages you can set on any object that you own, and also gives you their current values, that is, what the message would say to the player receiving it.

For example, Nemo decides that it's time to make the transition to Alternate Realities a little more...interesting, and wanders out to Nemo Plaza to check on the state of messages attached to exit "beam" out of the Plaza to the Realities. He types,

@messages beam

and sees,

@nogo beam isn't set.

@onogo beam isn't set.

@arrive beam isn't set.

@oarrive beam isn't set.

@oleave beam isn't set.

@leave beam isn't set.

and realizes he's got a lot of work to do.

Several kinds of messages can be set on an exit object; they are printed to various audiences at certain times whenever an attempt is made to go through the exit. The ones whose names begin with o are always shown prefixed with the name of the player making the attempt and a single space character. The standard pronoun substitutions (with respect to the player) are made on each message before it is printed.

Leave

@leave exit is "message

This command sets the message printed to the player just before they

successfully use the exit. The default message is <no message>. Nemo wants to set a fairly dramatic leave message, so he types,

@leave beam is ">>>shhivverr<<< >>TINGLE<<

and sees,

You set the "leave" message of beam_me_up (#342).

He gives beaming a try, and grins.

oleave

@oleave exit is "message

This command sets the message printed to others in the source room when

a player successfully uses the exit. The default message is "<player> has left."

With such an intriguing leave message, the oleave message -- what other people see -- had better match it. Nemo types,

@oleave beam is "***shhimmmerrrs*** and disappears with the sound of a distant thunderclap.

and sees,

You set the "oleave" message of beam_me_up (#342).

Wanda wanders into the Plaza, just as Nemo tries it out, and sees,

Nemo ***shhimmmerrrs*** and disappears with the sound of a distant thunderclap.

She's pretty impressed.

NOTE: when composing oleave and oarrive messages, remember that the MOO will fill in the player's name -- it will also fill in appropriate pronouns, when necessary, if you use appropriate pronoun placeholders in your message text (see expanded note on pronouns at the end of this section). So, LEAVE A SPACE FOR THE PLAYER'S NAME -- BEGIN oleave and oarrive messages WITH THE VERB.

arrive

@arrive exit is "message

This command sets the message printed to the player just after they successfully use the exit. The default message is <no message>. The sequence of text that a player sees when moving to another room is: leave message; description of new room; arrive message. Nemo thinks a bit, and types,

@arrive beam is "You drift suspended among the stars, contemplating potential destinations...."

and sees,

You set the "arrive" message of beam_me_up (#342).

oarrive

@oarrive exit is "message

This command sets the message printed to others in the destination room when a player successfully uses the exit. The default message is "<player> has arrived" -- which is pretty boring. Nemo figures arriving in Alternate Realities is truly a transformational experience, and that would be reflected in how the player arriving looks to those around them, so he types,

@oarrive beam is "***shhimmmerrrs*** and solidifies, a look of calm settling onto %p face.

and sees,

You set the "oarrive" message of beam_me_up (#342).

NOTE again the player's name is left off, as the MOO will add that automatically. NOTE also the pronoun place holder "%p" -- this indicates the MOO should fill in this space with a possessive pronoun appropriate for the players declared gender (more on pronoun placeholders at the end of this section).

nogo

@nogo exit is "message

This command sets the message printed to the player when she|he|it fails in using the exit. The default message is "You can't go that way." Nemo isn't bothering to set this message, because he isn't planning on locking the exit to Alternate Realities (Nemo would like to encourage *everyone* to experience Alternate Realities). The message normally indicates lack of success in using the exit because the exit is locked or the player in some other way lacks permission to move through it.

onogo

@onogo exit is "message

This command sets the message printed to others when a player fails in using the exit. The default message is <no message>. Since Nemo has not locked the exit, observers will never have the opportunity to see someone try to beam themselves up, and fail -- which would not, in any case, be a very pretty picture.

EXIT MESSAGES, REPRISED

Watch carefully as people come and go through rooms in SeaMOO, and notice the leave and arrive messages generated by your own movements. Mastering the use of messages is the first level of interactivity in creating MOOs. While descriptions of rooms and the objects in them can be very important, it is the messages attached to exits and objects and properties and verbs that lend the greatest feeling of reality. Compose your messages carefully when you build.

The next step up is programming objects with verbs, allowing users and other objects to interact with objects. For the intrepid and undaunted who wish to pursue that level of programming, the LambdaMOO Programmer's Manual by Pavel Curtis (1993) is required reading. It and many other support documents are available by anonymous ftp at ftp.parc.xerox.com, in the "MOO" directory.

SPECIAL NOTE ON PRONOUN PLACEHOLDERS...

Some kinds of messages are not printed directly to players; they are allowed to contain special characters marking places to include the appropriate pronoun for some player. Take the "oarrive" message for beaming into Alternate Realities, if Miguel beamed in, Nemo would want the message to say,

Migel ***shhimmmerrrs*** and solidifies, a look of calm settling onto his face.

The problem is the use of his in the message; what if the player in question is female? The correct setting of the oleave message on that doorway is as follows:

***shhimmmerrrs*** and solidifies, a look of calm settling onto %p face.

The %p in the message will be replaced by either his, her, or its, depending upon the gender of the player.

As it happens, you can also refer to elements of the command line (e.g., direct and indirect objects) the object issuing the message, and the location where this is all happening. In addition one can refer to arbitrary string properties on these objects, or get the object numbers themselves.

The complete set of substitutions is:

%

=> `%' (just in case you actually want to talk about percentages).

%n

=> the player

%t

=> this object (i.e., the object issuing the message... usually)

%d

=> the direct object from the command line

%i

=> the indirect object from the command line

%l

=> the location of the player

%s

=> subject pronoun: either he, she, or it}

%o

=> object pronoun: either him, her, or it

%p

=> posessive pronoun (adj): either his, her, or its

%q

=> posessive pronoun (noun): either his, hers, or its

%r

=> reflexive pronoun: either himself, herself, or itself

%(foo)

=> player.foo

%[tfoo], %[dfoo], %[ifoo], %[lfoo]

=> this.foo, dobj.foo, iobj.foo, and player.location.foo

%#

=> player's object number

%[#t], %[#d], %[#i], %[#l]

=> object numbers for this, direct obj, indirect obj, and location.

In addition there is a set of capitalized substitutions for use at the beginning of sentences. These are, respectively,

%N, %T, %D, %I, %L for object names,

%S, %O, %P, %Q, %R for pronouns, and

%(Foo), %[dFoo] (== %[Dfoo] == %[DFoo]),... for general properties

Note that there is a special exception for player names (the .name property), which are assumed to already be capitalized as desired.