--[Produced from original document on 7/10/95 at 4:00 AM(EDT)]
This document is very much still under construction. It is a
collabortive effort by all people who want Pueblo to be an easier
place to become accustomed to. Several section are still empty -
they are in progress look for them soon.
Please bring any and all suggestions, ideas, typo alerts and
(please!) complete sections to either quantum-leaper
(lvcochra@pc2.pc.maricopa.edu) or Hobbes*
(kbobrow@parc.xerox.com) Please do NOT edit this text and ask us
to try to integrate your changes - it's just too long to try to
do that.
Online discussion is being held on Pueblo, on the Design channel. If
you are already a character there, please join us by typing:
addcom de=Design
de on
Thanks, and we look forward to seeing you and hearing from you!
*************************************
Pueblo MOObie Manual
*************************************
by Cynde Welbes (aka quantum-leaper)
and Kimberly Bobrow (aka Hobbes*)
additional collaborators:
Vijay Saraswat (aka raincloud*)
Vicki O'Day (aka tinlizzie)
With thanks and credit to Pavel Curtis of LambdaMOO, and Jay et al
from Jay's House MOO.
Copyright (C) 1995 by Cynde Cochrane and Kimberly Bobrow
This language, or something close to it, will appear on a final copy
of this manual. This copy is a DRAFT and should be considered as
such.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by the author(s).
*************************************
MOObie Manual
Table of Contents
************************************* =
(Page numbers are missing from this text version -
future copies will have them)
The Very Basics 6
Introduction 6
Pueblo Values 7
Values 7
Learner responsibilities 7
Learner rights 7
Connection to Pueblo 10
Your first 5 commands 11
Look( L ) 11
who or @who 12
help 12
@911 13
@quit 13
Basic Parsing of Commands 14
Setting up your character 15
Your Character Name 15
@rename 15
@addalias 15
Your character's gender (@gender) 15
Your description 16
@realname 16
@info 17
Your password 17
Advanced Character Options 18
Communication 19
say (") 19
to (directed speech) 19
whisper (wh) 19
page (`) 20
Emote ( : ) 20
Com(munication) Channels 21
Shouting (Administrators only) 23
@gag 23
Mail 24
Sending mail 24
Finding out whether you have mail 25
Use the @mail command 25
Reading mail (@read) 25
Answering/replying to mai (@answer/@replyl 25
Getting rid of mail (@rmmail) 25
Sending the same mail message to a group of people 26
Mailing Lists 27
Finding out which mailing lists there are (@subscribe) 27
Finding out which mailing lists you're on now (@subscribed) 27
Joining a mailing list (@subscribe) 28
Leaving a mailing list (@unsubscribe) 28
Sending mail to a mailing list 28
Reading mail on a mailing list 28
Exploration 29
Movement 29
walk (go) 29
join 29
home 29
Object Numbers (obj#) 30
@move 30
follow 30
unfollow 31
exits 31
Interaction with the environment 32
look(L) 32
get, take 32
drop,throw 32
give, hand 33
@examine 33
@show 33
Entering Information 35
one-line entry 35
multi-line entry 35
Creating your own place on pueblo--your home 36
Where to locate your home 36
Architecting your home - rooms, rooms, everywhere 36
@dig 36
@addentrance and @addexit 37
@exits 38
@describe (@desc) 38
@sethome 38
$furniture 39
Properties introduced 39
$furniture properties 39
Integration and customizing your furniture 40
$doors and $windows 41
Advanced features for rooms 42
@messages 42
properties 42
topic signs 43
Your Friend the Editor 45
Adding to the end of your description 46
Formatting 47
Indenting 47
Blank lines 47
Deleting and inserting into your description 47
Substitution 48
Getting out of the editor 49
Enter Mode 49
Feature Objects 50
Intermediate MOOing 52
Creating Objects 53
Parent Objects - What are they? 53
Two Kinds of Parents 53
@create - the command 53
Corified Objects you can use in @create 54
Moo Clients 56
The emacs client 56
Setting up addresses for mud.el 56
Connecting to pueblo 57
Mud-mode features 57
Advanced MOOing 59
Object Oriented - What is the OO in MOO? 60
The Parser - the Details 61
Verbs - Moo Programming 62
Leftovers... 63
Appendix A - Cheat Sheet 64
Communication: 64
Movement: 64
Perception: 64
Special object words: 64
@messages 64
Pronoun Cheat Sheet 65
The Object Specifier 65
The Information Specifier 66
Information Specifiers for Verb Conjugation 66
Features: 67
*** Login Watcher *** 67
*** Stage Talk *** 67
*** Think Feature *** 67
*** Carpal Tunnel Feature Object *** 67
Construction 67
@digging rooms 69
Programming cheat sheet 69
Adding a property: 69
Adding a verb: 69
Programming a verb 71
Syntax examples for verb code 71
Useful code utilities/functions/object properties 72
Creating and setting up a new item and giving it to the
player: 73
Useful builtin functions (type 'help builtin' for complete
list) 73
Gopher slate cheat sheet 73
Appendix B - Computer Terminology 74
Appendix C - Editor Commands 75
The Note Editor 75
The Verb Editor 75
Appendix D - Carpal Tunnel Feature Commands 76
Sample Index 77
THE VERY BASICS
---------------
Introduction
------------
Welcome to Pueblo! Pueblo is a spot unlike any other on the net.
Pueblo was set up as a learning community to serve the needs of
students, educators and researchers from Longview Elementary School
and Phoenix College in Phoenix, Arizona, and the Xerox Palo Alto
Research Center in Palo Alto, California.
It is based on beliefs that each member has rights and
responsibilities to themselves and the rest of the community. Its
goal is to prove that online interactions and creations can enhance
and further learning. Pueblo's members range from Kindergarteners to
professionals and anywhere in between.
This manual is an ``immigration'' document. It is designed to provide
you some information about the values and mores of our community, and
the kinds of interactions that are acceptable within our community.
Because our community is computationally-based, some of our
interactions are mediated through computation. A critical survival
skill in our community, therefore, is knowledge of various commands
for communicating, moving and constructing in our space. We hope that
this document will help you as you make your way from MOObie to
expert in our community.
This manual will guide you through the very basics of setting up your
character, to more how the moo language works, and how to program.
Each section will give a brief overview of what the command does, the
syntax to use the command, an example, and some worksheets to help
you practice your newly developed skills.
In the syntax examples, the symbols < > are used to accentuate what
you need to personalize. You do not have to type them. In other
syntax examples, you may see [ ] placed around items that are
optional to include. Many commands have shortcuts to make them
quicker to input, these shortcuts will be placed in ( ) next to the
command. When typing in your commands, you do not need to worry
about using capital letters or small letter. Commands are not case
sensitive (in all but a few cases, and those will be pointed out) so
either will work. Enjoy and Happy Mooing!
Pueblo Values
-------------
Pueblo embraces a set of values that promote a learning environment
suitable for learners of all ages:
Values
------
* freedom from violence
* freedom from harassment (including, but not limited to unwanted
advances)
* clean language - words not suitable in a kindergarten classroom
are not appropriate.
* freedom from prejudice and stereotypes that may be offensive
Learner responsibilities
------------------------
* assist other learners
* be self-managing, resourceful, and sociable
* be active in self-assessment
* follow through on what you start
* provide feedback to other learners
* serve the community
* respect the rights of others
* maintain a current statement of learning goals.
Learner rights
--------------
* have fun
* explore all public areas
* build private areas
* negotiate their assessment
* seek assistance
* be challenged
* access this learning environment
* experience a safe environment
Pueblo, like other MUDs, is a social community; it is populated by
real people interacting via a computer network. Like members of
other communities, the inhabitants of Pueblo have certain
expectations about the behavior of its members and visitors.
Thus, the Community Group (CG) provides this general outline for
social conduct here; please familiarize yourself with and observe
these guidelines when you log into Pueblo.
In general:
Behavior that would be considered rude in `face-to-face' interaction
is rude here, too.
Some ways to interpret that:
Be nice. Don't be rude or annoy other people. If someone requests
that you stop a particular behavior or action, please respect their
wishes.
Avoid interrupting other people who are working or conversing with
their friends. You're welcome to explore the public places and ask
for advice if you're stuck, but please try to read the online
documentation and help yourself, first.
In addition, please realize that many players who log in here are
busy with other things, both virtually and in real life, and
therefore may not always be able respond to you immediately.
Harrassment of other players will not be tolerated. Emoted violence
and obscenities are considered inappropriate in the social context of
Pueblo.
Normal social courtesies are in effect on Pueblo. As in real life
social situations, treatment of a person you are just meeting should
be kept at a level that is comfortable for all concerned. It is not
considered polite to ':kiss' and ':hug' a new acquaintance, the
asking of personal questions should be guaged. Also, care should be
placed in keeping communication methods at a level appropriate for a
new acquaintance.
Pueblo, like in any community has both private and public places.
Private spaces should be respected and permission should be requested
before JOINING a player in their private domain. Personal space
should be respected, and this includes both "home" and any personal
communication channels they have set up.
Respect other player's sensibilities. MOO inhabitants and visitors
come from a diverse range of cultural backgrounds, both in the U.S.
and abroad, and have varying ideas of what constitutes offensive
expression. Please keep text as free of potentially-offensive
language and material as you can.
Making logs of Pueblo conversation for the purpose of public posting
is considered unethical unless each participant in the discussion
expressly agrees to allow the conversation to be posted.
Try to avoid arguing or debating with another player in a crowded
public room; such interactions interrupt the other players in the
room. Instead, consider paging or moving your conversation to one of
the many empty public rooms.
Although visitors to Pueblo are encouraged and welcomed, due to the
multiage community that Pueblo has, requests to join the community is
closely monitored. We are very interested in gaining a diverse
population, but also feel a great need to keep a safe environment for
the children who populate our community. If you feel that you can be
beneficial to the goals that Pueblo is trying to acheive, please
visit us as a guest to get a feel for the place. If you then would
like to join our community, please register a request with *char-req,
stating who you are, a little about your background, and why you feel
you would be a valuable asset to Pueblo.
Rude or offensive behavior can result, unfortunately, in your
removal, either temporarily or permanently, from Pueblo.
If you are uncertain about the meaning of any part of this document
and would like clarification, please consult a Community Group member
(type `help cg' for a listing of players involved in the group or
mail to *cg, the mailing list associated with the Community Group).
CONNECTION TO PUEBLO
--------------------
To connect to Pueblo, you must have telnet access to the Internet. If
you do not know what that means, ask your local systems
administrator.
The simplest way of connecting to Pueblo is to type:
telnet pueblo.xerox.com 7777
at your system prompt. You will see something like:
Trying 192.216.54.9 ...
Connected to ta.xerox.com.
Escape character is '^]'.
Welcome to the Pueblo, soon to be the most fun place on the
'Net.
Currently under construction ...
Pueblo is a research project exploring learning in virtual
space. Explore, learn and enjoy with us.
Thought for the day:
Despite our best efforts to teach them good manners, children
grow up behaving like us. ... anonymous
-
-raincloud*
*****
At this point you are talking to the Pueblo server. If your character
name is john, and your password is agnes, type in:
connect john agnes
Note that the distinction between upper and lower case is important.
If you have typed your name and password correctly, you will be
connected into Pueblo, and you will see a description of the room you
are in.
The program through which you access Pueblo is called a *client* (as
opposed to the Pueblo program itself, which is the server). Above we
have shown you how to use the simplest client available, telnet.
Telnet essentially makes it possible for lines you type to be sent
over to the Pueblo server, and server output to be displayed on your
screen. More experienced community members tend to use more
sophisticated clients that offer the user more facilities. Two
popular clients are tiny fugue (tf) and emacs (a very powerful,
general purpose editor). We will discuss the emacs client in a later
section. Information on tf, and other clients, is available by
anonymously ftping from:
ftp://parcftp.xerox.com:pub/MOO/clients
YOUR FIRST 5 COMMANDS
---------------------
As with every new skill you are trying to acquire there are a few
basic commands that you need to start with. In Moo, these are:
Look( L )
=========
"Look" will give you a description of the room you are in. So if you
are wandering around, and end up getting turned around, etc. By just
typing Look or L you will be able to get a fix on where you are.
This will also give you a listing of the obvious exits that you can
take to continue your journey. Look can also be used to look at
other characters and objects.
Examples:
look
The City Hall
You are inside the entrace of City Hall. To your (left, n,
north) is The Meeting Room. To your (s,south) is The City Pound.
High atop the majestic building is a large clock which shows the
current time. A Chair is here.
You see a The Gopher slate, a Graffitti Wall, a How to create a
note (#252), the A new-fangled gizmo, a Remington's Visit to
Phx, a Box of Lee-M's stuff, a mouth wash, and a Container File
Cabinet here.
Kimberly is here, off in another world.
Obvious exits: north, west, s, and east (Driver's License)
look Kim
Usually smiling, with a laughing twinkle in her blue eyes.
She'll program until the sun comes up, and sometimes until it
goes down again. Her toes are often warmed by kitties, and she's
been known to answer to Kimberly or Kim. She has a magical knap
sack over her left shoulder. Kimberly is wearing a Pueblo
sweatshirt. She is wearing a socks. She is wearing a Bathing
Suit. She is wearing an AIDS ribbon.
She is awake, but has been staring off into space for 21 hours.
Carrying:
a Magical Map a Ticket to Alaska (one
person)
a Double Cheeseburger the Memo Pad
a Kaivalya a radio
a Moo Cheat Sheet a temp_bsq
a Coke a temp_bsa
a gopher slate a Kimberly's Pueblo
Reflections
a Money bag
L wall
[ The Graffitti Wall! ]
READ # ON WALL : Read message number # on the wall.
SCAN WALL : See the subject/author of the messages on
the wall.
WRITE WALL : Write a message on the wall.
ERASE # FROM WALL : Removes message number # from the wall
(author only).CLEAR WALL : Clear all messages on the wall
(owner only).
[ The Graffitti Wall! ]
who or @who
===========
This command will give you a listing of who is on, where they are
located and how long it has been since they have been active (idle
time). Whenever you see a name on the who list that has an * behind
it (Hobbes*, raincloud*), this indicates that the person is a wizard.
Wizards are people that have special programming powers. So if you
run into problems, they should be able to help you, although you
should feel free to page anyone for help.
Example:
@who
Name Location Idle Time
Doing/Idle
---- -------- --------- --------
--
Hobbes* City Hall a second Moobie
Manual with ql
raincloud* Cottage in the Woods 30 minutes reading
server code
Del Del's Beach Getaway 54 minutes Getting
into Trouble
Costigan Visitor's Center an hour relaxing
Hatshepsut Wix's Front Porch 3 hours
Relieving her sunburn!
Gobot_from_Boston Wix's Front Porch 3 hours
Dwoowing!!
sunshine Visitor's Center 3 hours Smiling
:)
calbruin Visitor's Center 5 hours Trying
to sleep...
tinlizzie Visitor's Center 5 hours learning
& tinkering
BearBach City Park 6 hours
Archimedes Math Museum 10 hours building
museum
Kimberly City Hall 22 hours Mooing
back home!
Total: 12 people, 1 of whom has been active recently.
help
====
There is an online help menu, that is always available for you to
use. You can access this by typing just help and you will get a menu
to get you started. Or if you are looking for a help on a particular
subject you can type help (help movement), and this will pull
up the explanation, syntax and possible other help avenues for you to
take.
Example:
help say
-----
SAY
===
Syntax: say ...
" ...
Says out loud, so that everyone in the same room
hears it. This is so commonly used that there's a special
abbreviation for it: any command-line beginning with a double-
quote ('"') is treated as a 'say' command.
Example:
Munchkin types this:
"This is a great MOO!
Munchkin sees this:
You say, "This is a great MOO!"
Others in the same room see this:
Munchkin says, "This is a great MOO!"
@911
====
There is another way to find help with a problem or a question that
you have, and that is by using the @911 command. If you are having
problems, by using this command, you will reach those that are on the
community group to help you. Remember, you can also page wizards,
ask on channels or page any community member for help.
@911
@911 I am stuck in the editor and I can't seem to get out. What
do I do?
@quit
=====
This command will end your session on the Moo. You can type it from
anywhere you are on the moo. After you have been disconnected, your
character will automatically be returned to wherever your "home" is.
(see @sethome).
Basic Parsing of Commands
-------------------------
The Moo language tries to use natural language format. All commands
are based on basic grammar syntax. When the server (fancy talk for
the MOO) tries to execute a command, it looks for 4 essential parts:
verb direct-object preposition indirect-object . So when you
input your commands, you can keep this in mind and phrase your
command in this format. For example:
put book on table
give ball to hatshepsut
Sometimes verbs follow a shorter: verb direct-object format. Such
as:
hug King_Sphinx
tickle Coyote
read pamphlet
Setting up your character
-------------------------
One of the first things you will want to do when logging on to
Pueblo, is to set all of your personal information, set up your Moo
persona.
Your Character Name
-------------------
Many Pueblans like to choose a name that personalizes their
character. Some will use their real names, such as: Jim, Alex, where
others choose names that will show a little of their personality
(Hobbes*, Calvin, raincloud*, Batgirl). The name that you probably
have started out with is your "real name". If you wish to change
this, you can do so with:
@rename
-------
@rename can be used to change you character name, as well as room
names and object names. The syntax for @rename is as follows:
@rename me to
@rename me to Gnome
Names need to be perceived by the parser as only one word. Therefore
you can not use spaces in names. If you would like to have a name
that is more then one word, you must use an _(underscore), -(dash),
or *(asterisk) in place of spaces. For example: quantum-leaper,
Ms._Kitty, or red*rose. When naming yourself, it is convention for
only wizards to have the * at the end of their name.
Often names can be a little lengthy (i.e. quantum-leaper, Ms._Kitty).
To help others (and yourself) when people wish to communicate with
you, or look at your description, it is recommended that you add an
alias to your name. Aliases are a good idea to put on objects and
rooms you create also. This can be done when you first name yourself
or an object, or this can be done later. You can have multiple
aliases for your character or objects.
To place an alias on yourself when you first name yourself, you set
aside your alias with a comma ( , ):
@rename me to , ,
@addalias
---------
To add an alias after the fact:
@addalias to me
@addalias to
Your character's gender (@gender)
The next thing you should do is set your character's gender. This
will help the "computer" use the correct pronouns for your character.
You have a wide variety of genders to choose from: male, female,
spivak, either, splat or none. It is not required for you to use
your real life gender, remember part of the fun of Mooing, is that
you can be anything you want to be here. To set your gender:
@gender
@gender male, @gender female, @gender splat
Example:
@gender female
Gender set to "female".
Your pronouns: she, her, her, hers, herself, She, Her, Her,
Hers, Herself
Your description
----------------
As when reading a book, descriptions help you to get a mental picture
of what your surroundings, characters and objects look like. To help
the rest of the community get a mental picture of what your character
looks like you are asked to describe yourself. To do so:
@describe me as
or
@desc me as
Example:
@desc me as "Usually smiling, with a laughing twinkle in her
blue eyes. She'll program until the sun comes up, and sometimes
until it goes down again. Her toes are often warmed by kitties,
and she's been known to answer to Kimberly or Kim."
Description set.
l me
Usually smiling, with a laughing twinkle in her blue eyes.
She'll program until the sun comes up, and sometimes until it
goes down again. Her toes are often warmed by kitties, and she's
been known to answer to Kimberly or Kim.
At this point in time, your description can be as long as you would
like, but will appear as only one paragraph. Later you will learn
how to use the editor, and then you can go in and make your
description more then one paragraph if you would like.
@realname
---------
We also ask that each community member fill out @realname. This
will be stored in a special place, and only administrators have
access to it. This aides us in research information.
@realname
@realname John Smith
@info
-----
Each Pueblan is asked to fill out this information to help all
community members get to know each other. In @info, it is asked that
you fill out the information as it is in the "real world".
@info me is "your info here."
As with description, once you learn to use the editor, you will be
able to make this into a longer piece of information, and with
formatted paragraphs if you would like.
@info can be used to find out information about other characters
also. If you would like to know more about someone you are talking
to, you can do so by typing:
@info
@info Yoda
Example:
@info bg
Cyndy Olson is a sixth grade teacher at Longview Elementary. She
loves teaching and finding new ways to hook kids into education.
She has seen success with using MUSE/MOO in the classroom in
curriculum areas. One day she hopes to travel around seeing new
places and experiencing what she has been teaching.
Your password
-------------
Your personal password should be kept private. Access to your
password gives others access to your account and your character. When
you were given your character on Pueblo, you were also give a
computer generated password. It is recommended that you change your
password on a regular basis. Also the best passwords to prevent
security breaches will contain a combination of letters (small case
and capital), symbols, and numbers. Passwords are case sensitive.
To change your password:
@password
@password CharLie Ea**Gl**e
Example:
@password Humpty5 Dumpty10
New password set.
Advanced Character Options
--------------------------
There are many ways to personalize your character even more. One of
the ways that will be shown here is with messages. Messages are
lines of text that are printed on the screen when a person succeeds
or fails in manipulating an object. To see what messages you have on
your character you can type @messages me.
You will get a list of messages that you can customize anyway you
want to. To personalize your messages:
Before: @page_echo me is "Your message has been sent to %td".
After: @page_echo me is "Your message is traveling through
cyberspace at warp 9 to %td"
You must type in the " " marks before your message and after your
message. Below you will find a brief chart to explain what some of
the basic messages are for.
page_absent what will be seen when you are paged when
not logged in
page_origin what will be seen by people when you page
them
page_echo what people see when they page you
idle what will show on the who list when you type
`idle'
doing what will show on the who list when you are
active
Note: In messages you will notice that some of them use variable such
as %td. These stand for pronoun substitutions and are used as place
holders, so that in the place of the %td, will show either the
proper pronoun based on who is calling the command, or the proper
player name. To get a list of substitutions, and to learn more about
how to use them, refer to the pronoun substitution section in the
programming part of this manual, and pull up the help text on it.
Communication
-------------
One of the many fun aspects of Pueblo is the social interaction.
Pueblo is set up as an environment with many "rooms". These rooms
may represent the beach, a person's home, the Titanic, et cetera.
There are various ways to talk to others on Pueblo, depending on
where you are, and where they are.
say (")
=======
To communicate with someone that is in the same "room" as you are,
you can use the say command. When you use this command everyone in
the same room will be able to "hear" what you say.
say
say Hi, how are you doing today?
Example:
say Hello everyone!
You say, "Hello everyone!"
To abbreviate this command, you can use the " (quotation marks) in
place of the say:
"Hi, how are you doing today?
Example:
"Hello everyone!
You say, "Hello everyone!"
to (directed speech)
If you wish to direct your comments to one particular person in the
room, you can do this using a "to" command:
to hobbes How are you doing today?
Example:
to kim Talking to yourself is a little nutty...
You [to Kimberly]: Talking to yourself is a little nutty...
whisper (wh)
============
Sometimes you want to say something to someone in the room, but you
don't want everyone in the room to get the message. To do this you
whisper to the person you wish to address.
whisper "your message here" to
or
wh "your message here" to
wh "What did you do today?" to yoda
Example:
whisper "Whispering to yourself is even nuttier!" to kim
You whisper to Kimberly, "Whispering to yourself is even
nuttier!"
page (`)
========
When you want to talk to someone that is not in the same "room" with
you, you must page them. When you page someone, your message goes
only to the person you have paged.
page with How are you today?
page hobbes with How are you today?
Example:
page kimberly with You might want to consider therapy if you
keep it up!
From your fingers to Kimberly' eyes...your message zips away!
As with say, you can abbreviate page as well. Page is abbreviated
with an ' (apostrophe).
' How are you doing today?
'hobbes How are you doing today?
Example:
'kimberly then again, it might be my problem too!
From your fingers to Kimberly' eyes...your message zips away!
You can also shortcut pages to the same person. If you wish to send
another page to the same person that you have just paged, you can
leave off the name of the character you wish to page, and just put a
space.
' I'm doing good. (If you had previously paged hobbes, then
this message would also go to hobbes.)
Example:
' maybe we can go together!
From your fingers to Kimberly' eyes...your message zips away!
Emote ( : )
===========
Often you will wish to use non-verbal communication. To do this you
use the emote command. This command conveys that your character is
doing something. This can be done in a variety of ways, depending on
who you want to see the message.
To convey a non-verbal message to the people in the same room:
:laughs out loud!!
This will appear to people in the room as:
laughs out loud!!
quantum-leaper laughs out loud!!
If you wish to send a non-verbal to someone that is not in the same
room as you, you do so in the form of a page:
'hobbes :falls on the floor laughing.
Example:
'kimberly :giggles at the thought!
From your fingers to Kimberly' eyes...your message zips away!
Here's how it looks to Kimberly:
A little message to you:
Paging from afar, Hobbes* giggles at the thought!
Com(munication) Channels
------------------------
Com Channels are a lot like talking on a CB radio. They are used for
when a group of people want to talk together, but don't want to
necessarily have to go into the same room to do so. There are many
com channels that already exist. Public is a channel that is for
people that wish to make announcements that are important or
informational for the whole community to know. Chat is a channel for
community members to just talk and chit chat.
Most players are automatically on these two channels by default. You
can talk on Chat like this:
+ Hi everyone!
and on public like this:
= I'd like to hold a meeting in 5 minutes in the City Park.
To add a channel that you would like to be able to listen to and chat
on:
addcom =channel name
addcom si=Silly
Channels ARE case sensitive. Be careful not to put any extra spaces
in the addcom statement. There should be no spaces around the =
sign, and none after the channel name.
To turn on a channel, once you have added it:
on
si on
Example:
addcom bu=Buddies
Added alias bu for channel Buddies.
bu on
You have joined channel Buddies.
|Buddies| Hobbes* has joined this channel.
To speak on a channel:
bu hey Buddies!
Example:
bo hey buddies!
|Buddies| Hobbes*: hey buddies!
To emote on a channel, it is just like in a page, only with the
channel alias, instead of the page alias:
+ :yawns widely and heads off to bed.
This will show up to all others on the channel as:
| Chat!| quantum-leaper yawns widely and heads off to bed.
Sometimes you will want to take yourself off of a channel, for
example if you are trying to program or work on something, and the
channel messages may become distracting. To do this:
off
+ off
Anyone can make their own channels. If you find a need to start up a
channel for a special discussion group, or a special circle of
friends, you just:
addcom =channel name
addcom fr=friends
Then you would turn it on the same way as explained above.
Some com channels are recorded so that logs can be made out of them
later. For example the pedagogy channel is recorded so that
discussions that are held there, can be passed around to all that are
interested, and used for further discussions, projects or decisions.
If a com channel is being recorded, there will be a (rec) next to the
channel name. There will also be periodic messages sent out on the
channel to remind people that it is being recorded.
If you would like to know who is listening on a particular channel at
a particular time, you can use the who command for that particular
channel:
who
+ who
fr who
This will give you a list of people that are listening at that time.
Anyone recording will be listed in the list as well.
Shouting (Administrators only)
------------------------------
Sometimes as an administrator, you may need to say something or
announce something to the whole community. To do this, you can use
the @shout command. This command is not one that is meant to be
overly used.
@shout
@shout Pueblo is going to be shutting down in 5 minutes.
@gag
----
Sometimes you may want to prevent receiving messages from a
particular person or object. To accomplish this you use the @gag
command. @gagging a particular person or persons, will prevent you
from receiving any pages, says, emotes, or whispers from that person.
@gagging an object will prevent you from receiving any messages that
they send out.
@gag
@gag city clock (this will prevent you from seeing the time
messages that the city clock sends out)
To ungag a person or object:
@ungag city clock
Note: you will have to be at City Hall to call the clock by name.
MAIL
----
Everybody in Pueblo has a mailbox, where other people can send them
messages. This is a good way to get in touch with someone who isn't
currently connected to Pueblo, since you can't page or talk to
someone if they're not here at the moment! When you send a mail
message, it will wait in the recipient's mailbox until they have time
to read it.
Sending mail
------------
Use the @send command. You will be asked to supply a subject line,
which you should use to describe in a few words what your message is
about. After that, you'll be moved automatically to The Mail Room,
where you will write the message itself and then send it off. Here's
what your dialogue might look like.
[You type:] @send hobbes
[You see:] Subject:
[Type a line of input or `@abort' to abort the
command.]
[You type:] Where are kitties?
[You see:] The Mail Room
Composing a letter to hobbes entitled "Whare are kitties?"
The Mail Room is an editor, similar to other editors in the MOO used
for notes and verbs. Editors are discussed in more detail in the
Editor Section. For now, let's continue through the mail example and
you'll learn a few basic survival skills in the editor. Basically,
you can think of yourself as "saying" things to the editor in the
same way you talk to a roomfull of people in Pueblo.
Continuing the example from above:
[You type:] say Other people have kitties! I want a
kitty too!
[Or you type this shorter version:]
"Other people have kitties! I want a kitty too!
[You see:] Line 1 added.
[You type:] "Can you tell me where and how to get one?
[You see:] Line 2 added.
[You type:] "
[You see:] Line 3 added.
[You type:] "Thanks - tinlizzie
[You see:] Line 4 added.
Now, you might want to see what you have so far.
[You type:] list
[You see:] 1: Other people have kitties! I want a
kitty too!
2: Can you tell me where and how to get one?
3:
__4_ Thanks - tinlizzie
If you want to add more text, just keep "saying" lines. We will not
discuss here how to change text you've already added; see the editor
section to learn about that. To send your message off, do this:
[You type:] send
[You see:] Sending...
...#2305 [the number you see will be some
identification number, different from this one and not
to be concerned about]
Finding out whether you have mail
Use the @mail command
@mail
This will tell you how many messages you have, followed by a list
telling you about each message: what number this message is in the
list of messages in your mailbox (1 if it is the first message, and
so on); when the message was sent; who sent it to you; and what its
subject is (this is the subject given by the message's author).
For example, you might see:
2 messages:
1: June 30 09:15 Tiger Happy birthday
2: July 7 14:20 Jill Where have you been?
If you have no mail, you'll see a message telling you that instead of
seeing a list of messages.
Reading mail (@read)
Use the @read command, giving the number of the message to name the
message you want to read.
@read 2
This means that you want to read message #2. You learn a message's
number from the @mail command that listed your messages for you.
Answering/replying to mai (@answer/@replyl
If you want to answer a mail message, use @answer or @reply and give
the number of the message you are answering.
@answer 2
@reply 2
You won't be asked to give a Subject, as you would be if you were
composing a brand-new message unrelated to other messages. Instead,
the Subject will be taken from the Subject of the message you are
answering. Otherwise, it's just like creating a new message; you'll
be in the editor and you should go ahead and write your message and
send it.
Getting rid of mail (@rmmail)
-----------------------------
If you don't remove messages, they'll stay in your mailbox. If you
decide that you don't need a message anymore, remove it this way:
@rmmail 3
This will remove message #3. It's a good idea to save space by
removing messages you don't think you'll want to read again.
Sending the same mail message to a group of people
If you want a message you're creating to go to more than one person,
there are two ways you might go about it.
The simplest way is to simply name two (or more) people in an
ordinary @send command.
For example:
@send Tiger Jill
Now you'll compose your message and send it, and it will show up in
both Tiger's and Jill's mailboxes.
Another way to send a message to a group of people is to take part in
mailing list discussions. That's described in the next section,
Mailing Lists.
MAILING LISTS
-------------
There are several mailing lists in Pueblo. These are lists of people
who are interested in exchanging mail on particular topics.
Finding out which mailing lists there are (@subscribe)
You can find out which mailing lists there are by using the
@subscribe command.
@subscribe
This will tell you the name (plus aliases, if any) and a brief
description of each available mailing list.
Example:
@subscribe
*Site-Locks [Writable] [Approved]
Notes on annoying sites.
*Player-Creation-Log, *PCL [Approved]
Log of player creations.
*Bug-reports, *bugs [Writable] [Approved]
Bug reports here.
*security [Writable] [Approved]
This mailing list is readable only by members of the DB
Group, and should be used to send reports of possible security
holes.
*Community-Group, *CG [Writable] [Approved]
The Community Group is responsible for handling social
problems and promoting a sense of community.
*pn, *prog [Public]
This can either be a mailing list or a mail folder,
depending on what mood you're in...
*cheat [Public]
A collection of SHORT messages designed for quick reference
on moo commands and moo coding. Messages not falling into that
category will be deleted.
*legends [Public]
A place to collect all the folklore and legends of Pueblo
...
*Humor [Public]
What do you think this is? It's funny stuff, of course!
Please use good taste if you post here, but have fun!
*Character-Requests, *char-req [Readable]
A mailing list for requesting a permanent character on
Pueblo.
*Projects, *proj
A mailing list for programming and building projects on
Pueblo. Hooked to the Projects Board in the Programmer's
Clubhouse.
You should notice that mailing lists all start with an asterisk (*).
That's part of their name and can't be omitted.
Finding out which mailing lists you're on now (@subscribed)
To find out what mailing lists you're on right now, use the
@subscribed command.
@subscribed
You are subscribed to the following lists:
*News 0 new messages
(Note that this command also tells you whether there are any messages
on that list that you haven't read yet.)
Joining a mailing list (@subscribe)
To join a mailing list (so you'll get any messages sent to it in the
future), use the @subscribe command with some extra information this
time.
@subscribe *legends with notification
You'll be told how many active messages there are on the list right
now, and you will be notified when any new messages are sent to that
list.
Leaving a mailing list (@unsubscribe)
If you decide that you're not interested in belonging to a mailing
list any longer, use the @unsubscribe command.
@unsubscribe *legends
Sending mail to a mailing list
------------------------------
Just use the @send command and send to the name of the mailing list
(*news, *legends, etc.) Other than that, it's the same as sending to
an individual.
Reading mail on a mailing list
------------------------------
Reading mail on a mailing list is similar to reading mail in your own
mailbox. Use the message number to refer to which message you want to
read. But add the name of the mailing list at the end of your
command, like this:
@mail on *legends (gives you a list of message headers)
@read 2 on *legends
EXPLORATION
-----------
To explore Pueblo, you will need to know how to move around the moo,
and how to interact with the objects and places you will find. This
section will contain the commands that will allow you to do that.
Movement
--------
There are 6 basic ways to move around Pueblo.
walk (go)
---------
This allows you to go to a certain place in Pueblo.
walk to go to
walk to Visitor's Center go to Toy Factory
Example:
(From the City Hall)
walk to visitor's center
The City Park
You see a Recycling Bin (BIN), a fishing equipment, a worm, and
the Generic Car here.
BearBach is here, off in another world.
Obvious exits: east, north, west, south, Northeast, up,
southwest, northwest, southeast (library), Path, and Visitor's
Center...
The Visitor's Center
You look around you to see exactly ...
Obvious exits: City Park...
You have arrived.
join
----
This allows you to go to where a particular person is.
join
join Wix
Example:
join calvin
The Hobbes' Petting Zoo
You see a First Quiz Machine here.
Obvious exits: Northeast, Southwest, South, Zone, and Walkway
The Calvin's Castle
A warm friendly place with papers strewn about ...
Calvin is here.
Obvious exits: West w, North, and s
You have arrived.
home
----
This command will automatically take you home from wherever you are
on Pueblo.
Example:
home
You click your heels three times.
The Hobbes' Habitat
You're in an immensely spacious dwelling - bright and airy...
Object Numbers (obj#)
---------------------
Before talking about moving objects, it's time to mention something
very special about every object on the Moo. That special something
is its object number (obj# for short). Every object on the Moo, even
YOU, has its own unique obj#. No matter what an object gets renamed,
no matter where an object gets moved to, its obj# is always the same.
One way to get the obj# of an object is to examine it. In the
following example, you should notice two obj#s; one for the item
itself, and one for the place it happens to be locked to.
Example:
ex talisman
Talisman (aka #420)
Owned by Kimberly.
A small, crystal globe, with a slight warmish gold hue. There
is an almost undetectable humming coming from it.
The Talisman can only be moved to locations matching this key:
#445[Hobbes' Habitat]
Obvious verbs:
g*et/t*ake talisman
d*rop/th*row talisman
gi*ve/ha*nd talisman to
*** Finished ***
@move
-----
This command will allow you to move directly to another room. It
will also allow you to move objects that you own to other places, or
to you. To use this command, you must have the obj# for the object
or the room, and the room must be set free_entry (this allows things
to be transported into it). Most rooms are set to allow free_entry
by default, but you can change this on rooms that you own.
@move to
@move me to #2767 (This would move me to the Programmer's
Clubhouse)
@move jeep to #7054 (This would move the jeep to the room that
has the number #7054, which in this case is the Jeep Keep)
The only time you don't need the obj# of the place you want to move
an object to, is if you are moving something that you own to the room
you are in or to you.
@move KC to me (This moves KC to my contents)
@move KC to here (This moves KC to the room that I am in)
follow
------
This will allow you to go wherever the person you are following goes,
without having to input anything.
follow (This starts up the following)
follow quantum-leaper
Example:
follow kim
You start to follow Kimberly.
Kimberly opens the door.
Kimberly goes West.
West closes.
You follow Kimberly.
You open the door.
The Hobbes' Petting Zoo
You're standing in front of a large stone archway which is the
entrance to a beautiful park like area...
Kimberly is here.
Obvious exits: Northeast, Southwest, South, Zone, and Walkway
unfollow
--------
unfollow (This will stop you following)
unfollow quantum-leaper
Example:
unfollow kim
You no longer follow Kimberly.
Some extra commands available for the follow procedure are:
lose (This will stop a player from following
you.)
following (This will show you who you are currently
following.)
followers (This will show you who is following you)
followers on (This will allow others to follow you and announce
it to the room)
followers off (This will not allow others to follow you, and
will announce it to the room)
exits
-----
These are the obvious "doors" in a room, that will allow you to move
into the next room. To use exits all you type is the exit name, or
alias. Most rooms will show what the alias for the exit is. If you
have been in a room for a while and need to find out what exits are
available to you, just type look or @exits.
Obvious exits: City Hall..., City Park..., Visitor's
Center... and Condos...
If you wanted to go to City Hall, you would type in: CH and you
would move to that room. If you wanted to go to City Park, you would
type in: CP and so on.
Sometimes when a person creates a room, they will change the exit to
a door (see $doors). Some doors are created to automatically open
when you type in the exit name, as in the above example. Some doors
you will need to be opened by you. If you try to use the exit name,
and it needs to be opened, you will be prompted with: The is closed. To use the exit you will have to:
open
open hallway
hallway
Example:
close door
You close the door to the beach.
open door
You open the clubhouse door.
door
The High Ridge Dolphin Beach
The door to the clubhouse is open.
You see the xkae here.
Obvious exits: South and Clubhouse
Interaction with the environment
--------------------------------
As you are exploring Pueblo, you will find objects that people have
made, and you will want to interact with them. To do so, you will
use the following commands.
look(L)
-------
You will use look as mentioned earlier. Often people will put
information on how to use a specific object in the description. So
by looking at the object, you will get further information on what
you can do with the object.
look
look graffitti wall
get, take
---------
If you would like to pick up the object, you can do so with these
commands.
get take
get ball take ball
drop,throw
-----------
Used to put down an object. Remember to do these if you pick up
someone else's object, otherwise you will continue to carry them with
you.
drop throw
drop ball throw ball
give, hand
----------
Used to give an object to another player.
give to
hand to
give ball to hobbes*
hand ball to hobbes*
Note: If you accidentally end up carrying off someone else's object,
You can place it in the lost and found bin that can be found at the
Visitor's Center.
Sometimes you will want to be able to find out more about an object.
Such as it's obj#, who owns it, what parent object it has. There are
two ways to do this. Each of which gives you different information.
@examine
--------
@examine will give you a list of verbs (actions/command) the object
has on it, aliases for the object, the owner of the object , and the
obj# of the object.
@examine
or
@ex
or
ex
@examine backpack, @ex backpack, ex backpack
Example:
ex orange push-up
orange push-up (aka #7913, push-up, and pushup)
Owned by Hobbes*.
Orange sherbet in a small cardboard cylinder. Push up on the
handle in the bottom to get more of the tasty treat.
Obvious verbs:
smell/sniff orange push-up
taste/sip orange push-up
eat/drink orange push-up
g*et/t*ake orange push-up d*rop/th*row orange push-up
gi*ve/ha*nd orange push-up to
*** Finished ***
@show
-----
@show gives more comprehensive information on an object, including:
obj#, parent, location, owner, flags, and properties.
@show
@show backpack
Example:
@show orange push-up
Object ID: #7913
Name: orange push-up
Parent: orange push-up (#3052)
Location: Hobbes* (#2305)
Owner: Hobbes* (#2305)
Flags: r
Properties:
key: 0
aliases: {"orange push-up", "push-up", "pushup"}
description: "Orange sherbet in a small cardboard cylinder.
Push up on the handle in the bottom to get more of the tasty
treat."
visible: 1
integrate_room_msg: ""
integrate_player_msg: ""
integrate_container_msg: ""
unique: 0
proper: 0
integrate_in: {#185}
handlers: {}
number: 1
offered: #-1
property_help_entries: {}
object_size: {521, 805334222}
drop_failed_msg: {#70, "do", "You can't seem to drop ",
{"dname", "thing", 0}, " here."}
drop_succeeded_msg: {#70, "do", "You drop ", {"dname",
"thing", 0}, "."}
...
Entering Information
--------------------
Sometimes when you are interacting with an object on Pueblo you will
need to give the object some information. When this happens you may
be prompted in one of two different ways for the information. The
first way is for a one line answer/comment, the second is for a multi-
line entry or response. The mode you will be using to enter this
information is called the enter mode and can get confusing. You may
also see this mode in the online editors, although it is not
recommended that you use it.
one-line entry
--------------
Let's imagine you were going to enter some information about a
project you are working on, in this case the Moobie Manual. You will
be prompted with the following (or something nearly like it) when you
are being asked for a one line entry:
Enter a project name:
[Type a line of input or '@abort' to abort the command]
At this prompt you would just type in your comment:
Moobie Manual
If you decided that you didn't want to enter anything, you would just
type @abort and it would return you to wherever you were.
multi-line entry
----------------
Now let's imagine that you were going to describe your project. You
will be prompted for a multi-line entry in the follow way:
Enter a short description of the project:
[type lines of input: use '.' to end or '@abort' to abort
command.]
You would then type:
A manual with basic commands to help new users. It will include
information from the very basic and work them up to more complex
programming. (return)
.
The period above, on the last line is VERY important. To end your
input you must put a ' . ' (period) on a separate line - all by
itself. The server will not know to end the entry until it sees this
symbol.
CREATING YOUR OWN PLACE ON PUEBLO--YOUR HOME
--------------------------------------------
Most Pueblan's like to establish a section of Pueblo that is all
theirs. A place where they can relax, and be creative. A place
where they can practice new skills without having it on display for
others, until they have been perfected. A place where they will go
to when they have logged off.
Where to locate your home
-------------------------
In the Visitor's Center on Pueblo you will find a brochure box with
brochures with important Pueblo information. Some of the information
is subject to change, so it's best to get it from the brochures since
they are updated regularly. In the brochure box you will find a
brochure that lists places you can build your home.
Architecting your home - rooms, rooms, everywhere
-------------------------------------------------
Every location in pueblo is actually a room, or more properly, a
$room (more on things that start with $ in the @create section.)
This holds true even for locations that don't have the appearance of
a `room'. The City Park is a $room, as is the Petting Zoo, as is a
living room in one of the condos. When you build your home you will
want to think about how you want to lay it out. You will be creating
a series of $rooms, with various descriptions, which are connected by
exits and entrances.
Some people, when they build their home, have you arrive right inside
their living room when you walk through their front entrance. Other
people might have a foyer, a front patio, or a pathway as the first
$room you arrive in, and have further $rooms beyond that. You're
only limited by your own imagination, so make your home something
that you will like.
@dig
----
The first step to creating any type of room is to @dig the room.
Let's say we're already in a Foyer, and we would like to `dig' to a
brand new Living room. There are three things that will need to be
created for this: the living room, the entrance TO the living room,
and the exit to get back to the foyer. All three things are created
with one single @dig command. The basic syntax for this is as
follows.
@dig | to
@dig Living Room..., lr, living | Foyer..., fr, foyer to
Living Room
entrance name-------------------> Living Room
Showing people the alias-----> ...
setting the aliases---------------> lr, living
straight bar to separate--------> |
exit name---------------------------> Foyer
Showing people the alias------> ...
setting the aliases----------------> fr, foyer
setting the name of the room--> to Living Room
Example:
@dig Living Room..., lr, living | Foyer..., fr, foyer to
Living Room
Living Room (#7925) created.
Exit from Foyer (#1234) to Living Room (#7925) via {"Living
Room...", "lr", "living"} created with id #7926.
Exit from Living Room (#7925) to Foyer (#1234) via
{"Foyer...", "fr", "foyer", " Foyer..."} created with id
#7927.
@addentrance and @addexit
-------------------------
On Pueblo, you will find a few areas that are considered public to
build (see .link_ok and `Where to locate your home', above). If you
think you have found some alternate, appropriate place to @dig from
you will find that you will be required to get the permission from
the owner of the room you are building off of. You will have to have
the owner set up your exits and entrances. In practice you should
only do this with prior agreement from the owner. To do this you
will have to keep note of the obj# of your exit and entrance (which
you are given when you dig your room--see above example).
Example:
@dig Palm Tree Place..., ptp | Town Houses...,th to
Palm Tree Place
Palm Tree Place (#7940) created.
Exit to Palm Tree Place (#7940) via {"Palm Tree Place...",
"ptp"} created with id #7941. However, I couldn't add #7941 as
a legal exit from Pueblo TownHomes. Get its owner, quantum-
leaper to add it for you.
Exit from Palm Tree Place (#7940) to Pueblo TownHomes (#7916)
via {"Town Houses...", "th", " Town Houses... "} created
with id #7942.
However, I couldn't add #7942 as a legal entrance to Pueblo
TownHomes. You may have to get its owner, quantum-leaper to add
it for you.
As you can see, #7941 will need to be added by quantum-leaper as a
valid exit, and #7942 as a valid entrance. All you will need to do
to get this accomplished is to page the person (if they are online)
or send them moo-mail (see moo-mail) with the request and the number.
Sometimes you will be the one requested to add the exits and the
entrances. To do this:
@addexit @addentrance
@addexit #7941 @addentrance #7942
Occasionally you may have the exit and entrance obj#'s given to you
by someone, in the wrong order. This will prompt the parser to give
you an error message telling you that That is not an exit or That is
not an entrance. If you get this message try to switch the numbers
(i.e. use the given exit number in the @addentrance command). If you
still get error messages, just ask the person requesting the
additions to check their numbers.
@exits
------
You used the command @exits earlier when you were exploring Pueblo.
@exits can always be used to find the obj#'s of your exits and
entrances. When you use the @exits command in a room you own, you
will be given a listing of all of the exits in the room, the aliases,
the destinations, and the obj#'s of the exit and the destination
room.
Example:
@exits
The down (#559) leads to the Hobbes' Habitat (#445) via {down,
d}.
The Spa (#561) leads to the Spa (#560) via {Spa, right}.
@describe (@desc)
-----------------
As with your character, you will want to describe your house and each
of its rooms to give others the flavor of your creation. This is
done in much the same way as you described you character. When you
are standing in the room that you wish to describe, you type:
@describe here as
or
@desc here as
@desc here as A big, airy room with lots of windows. The floor
is covered in a deep plush smoky grey carpet.
Example:
@desc here as "You're standing at the edge of a large landing
which overlooks the main entry way of Hobbes' Habitat. To your
right is a set of glass doors with a large sign above them which
says: The Spa."
Description set.
Your description is not limited in length, but will appear all in one
paragraph. If you wish to create a description that has multiple
paragraphs you will have to use the editor. The editor will be
explained in a later section. The command you will use to go into
the editor and bring up your room description is:
@edit here.description.
@sethome
--------
When you first become a character, your default home is set as the
Visitor's Center. This is where you will be transported when you use
the command home mentioned in the movement section. This is also
where you will be sent when you log out (@quit). The @sethome
command allows you to change that destination. In order for you to
be able to set your home to a room, you must either own the room or
be set as a resident of the room (see advanced features--.residents).
To do this command all you need to do is move yourself to the room
you wish to have set as your home and enter @sethome. You will be
told that that room is now your new home.
$furniture
----------
One way to customize you home is to create furniture for visitors to
sit on. $furniture is a an object that has been programmed to have
the features of furniture. To do this you:
@create $furniture called
@create $furniture called Blue Couch, bc
Once you have create the $furniture, you will want to describe it.
This is done:
@desc as
@desc blue couch (or bc) as An overstuffed couch that just
invites a lazy afternoon's nap.
You must also remember to drop the furniture, couches get very heavy
if you try to carry them for too long. To do this:
drop blue couch
Properties introduced
---------------------
Part of the wonder of objects on a Moo is how flexible and
customizable they are. Much of this is achieved through the use of
something called `properties.' A property is any setting that can be
different for each object of the same type. For example, each object
has a .description property - every object has a different
description although they all have that same property. If people
were objects, we might all have a .eye_color property - we all have
our own individual eye color, but we (as members of the same type of
`object') all have the property.
Properties can `contain' all sorts of information, from numbers, to
text, to lists, to references to other objects. The important thing
here is simply to understand the base concept of properties: the name
of a property will be the same for all of the same kind of object.
The value in that property is specific to the individual object.
You may have noticed the period in front of the .description and
.eye_color. The period is used when referring to a property to
separate it from the name of obj# of the object it is defined on.
For example: Hobbes*.description refers to the .description
property on Hobbes*. In our pretend example, Hobbes*.eye_color would
refer to the color of Hobbes*' eyes. Hobbes*.eye_color would be
"blue" while Calvin.eye_color would be "green".
$furniture properties
---------------------
One of the properties that $furniture has is the number of people
that are allowed to sit on the furniture. To set this number you:
@set .seats to
@set bc.seats to 3
NOTE: please notice the " . " between the object name and seats.
This is very important to have in the command, and if forgotten, the
command will not be executed. This points the parser to the seats
property on your furniture.
NOTE: A second note to make about this command, when using the @set
command, you can not use an object name that has 2 words (or more -
no spaces allowed). You must use the alias or the number.
A second feature that furniture has is a .squeeze property. This
property will have players "squeezed" off the piece of furniture if
it has exceeded the number you have placed in this property.
Setting this property is very similar to setting the seats property:
@set .squeeze to
@set bc.squeeze to 4
Integration and customizing your furniture
------------------------------------------
A neat feature that all objects have is integration. This means that
a set description message can appear in the room message. For
example, even though in your room description, you have not mentioned
your blue couch, you can get the blue couch to appear there by
setting the appropriate integration message on your couch.
Example of room without integration:
The Upstairs Hallway Landing
You're standing at the edge of a large landing which overlooks
the main entry way of Hobbes' Habitat. To your right is a set
of glass doors with a large sign above them which says: The
Spa.
You see a planter here.
Kimberly is here, distracted.
Obvious exits: down and Spa
You type:
@integrate_room planter is "There is a large wooden planter with
an untold number of multi-colored pansies in the corner."
Example of room with an integrated planter:
look
You set the "integrate_room" message of the planter (#7940).
The Upstairs Hallway Landing
You're standing at the edge of a large landing which overlooks
the main entry way of Hobbes' Habitat. To your right is a set
of glass doors with a large sign above them which says: The
Spa. There is a large wooden planter with an untold number of
multi-colored pansies in the corner.
Kimberly is here, daydreaming.
Obvious exits: down and Spa
To see what messages are available for you to customize, use the
@messages command.
@messages
@messages blue couch
Example:
@messages blue couch
...
@drop_failed bc is "You can't seem to drop %td here."
@drop_succeeded bc is "You drop %td."
@odrop_failed bc is "%n:(tries) to drop %ti but %n:(fails)."
@odrop_succeeded bc is "%n:(drops) %ti."
@otake_succeeded bc is "%n:(picks) up %td."
@otake_failed bc isn't set.
@take_succeeded bc is "You take %td."
@take_failed bc is "You can't pick up %td."
...
You may well notice that several of these messages appear to be
redundant, e.g. @drop_succeeded and @odrop_succeeded. These aren't
redundant, in fact; messages with the `o' in the front of them are,
by convention, messages that people other (`O'ther) than the player
who does something (drops, takes, etc.) will see. So when you see a
pair of messages, the one without the `o' in front will be seen by
the person performing the action. The one with the `o' will be seen
by everyone else in the room.
The message that lets your couch description appear in the room
description is the @integrate_empty. This is set like you set
messages on your character:
@integrate is " your description here"
@integrate_empty blue couch is "A soft and cushy blue couch sits
in front of the fireplace, just calling out your name."
The best way to go about customizing your messages, is to look
through them and experiment. Do some changing and see what effect it
has.
$doors and $windows
-------------------
$doors and $windows are another feature to help you to customize your
home. $doors and $windows are used to replace exits, and to
perpetuate the realism in the virtual world of Pueblo. To change
your exit to a door, all you need to do is:
@chparent to $door
@chparent hallway to $door
Now your exit can be opened and closed. Doors have many special
features and properties that will need to be played with. To start
with, let's discuss some of the messages that you can set on your new
door.
@open/@close/@lock/@unlock/@knock
displayed to the room and player when the action is performed on
the door.
@opens/@closes/@locks/@unlocks/@knocks
displayed to the other side of the door when the action is
performed.
@self_closes
displayed to the room when the door closes by itself.
@opened/@closed/@locked/@unlocked
says the door is currently opened/closed,/etc. Displayed in the
door's descriptions and when someone tried to open/close/etc. it
when it is already opened/closed/etc.
@no_key
displayed to the player when they try to open/unlock a locked
door without having a key.
@integrate_room
message integrated into the room's description.
Some of the properties that you can set on your $door are:
@set .user_key to
this sets the object which is used as the key for locking and
unlocking the door. In order to unlock a door, you would then
have to have the keys in your contents.
@set .automatic to <0 or 1>
this should be set to 0 for a non-automatic door, and to 1 for
an automatic door. And automatic door is one which
automatically tries to be opened when someone tries to walk
through it.
@set .close_delay to
set this to the number of seconds before the door closes by
itself after being opened, or to -1 if it doesn't close by
itself. The default is -1.
$windows are almost the same as $doors except that they are
"transparent" and when you look at them, they will tell you what is
outside of the window. To change an exit to a $window:
@chparent to $window
Advanced features for rooms
---------------------------
@messages
=========
rooms also have messages on them that can be customized. These are
done as discussed in previous sections.
properties
==========
Listed below are a few properties you may want to set on your room.
.residents
==========
This allows players other then the owner to set their home in a room
(default is { }).
@set here.residents to {obj# of people you want here}
@set here.residents to {#946}
.free_entry
===========
This allows other players to transport into the room. (default is 1)
@set here.free_entry to <0 or 1> (0 does not allow
transporting, 1 does allow it.)
@set here.free_entry to 0
@set here.free_entry to 1
.obvious
========
This will allow an exit to be seen by all (default is 1).
@set here.obvious to <0 or 1> (0 hides exit, 1 shows exit)
@set here.obvious to 0
@set here.obvious to 1
.link_ok
========
This will allow a person to freely link their rooms to yours (default
is 0).
@set here.link_ok to <0 or 1> (0 will not allow free linking, 1
will allow free linking)
@set here.link_ok to 1
@set here.link_ok to 0
topic signs
-----------
Topic signs are a fun little toy to play with. Every room has this
feature. Topic signs can be used to post messages that you would
like all other players in a room to see. To use topic signs, simply
type:
topic
topic Genius at work
Example:
topic Genius at work, tread quietly!
You summon the groundskeeper, who drops a topic sign off. You
write `Genius at work, tread quietly!' on a slip of paper and
put it on the sign.
look
The Upstairs Hallway Landing
You're standing at the edge of a large landing which overlooks
the main entry way of Hobbes' Habitat. To your right is a set
of glass doors with a large sign above them which says: The
Spa. There is a large wooden planter with an untold number of
multi-colored pansies in the corner.
A sign here says, `Topic: Genius at work, tread quietly!'
Kimberly is here, daydreaming.
Obvious exits: down and Spa
You can change the message simply by typing:
topic
Example:
topic Genius asleep, talk loudly!
You cover the topic sign reading `Genius at work, tread
quietly!' with a slip of paper reading `Genius asleep, talk
loudly!.'
To get rid of the topic sign, just:
kick topic sign
You will be given a message that it has been taken away.
Example:
kick topic sign
You kick the topic sign down. The groundskeeper whisks it away.
YOUR FRIEND THE EDITOR
----------------------
There will be many times that you will find the need to edit your
work (typos, you want to add something, you want to delete something,
etc.) Pueblo has an online editor that you can use to make any
changes you wish. There are 3 basic versions of this editor, the
note editor, the verb editor, and the mail editor. This section will
explain the note editor. All of the basic commands are the same in
each editor, the only difference comes in leaving the editing
environment. The mail and verb editors will be discussed further in
the mail and verb sections respectively.
When you use the editor, you are moved to a special room. From the
editor, you can page, talk on channels (if the channel alias doesn't
conflict with an editor command), and communicate as you would
normally to anyone that is not in the same room as you. You can not
use the say ( " ) command while you are in the editor to speak to
anyone who was in the room with you prior to entering the editor.
Likewise, you will not see any conversation in that room until you
return from the editor.
To begin the editing procedure, you use the command:
@edit
This object may be you, a room you own, or an object you have
created. This will place you in the editor, and set you up to edit
the .description of the object you have indicated.
Example:
@edit me
The Note Editor
Do a 'look' to get the list of commands, or 'help' for
assistance.
Now editing "Hobbes*"(#2305).description.
As with most other aspects of Mooing, the command look will give you
a lot of direction. If you type look as soon as you get into the
editor, you will see a list of commands that you can use. The ones
that you will use most frequently are listed below. If you need to
use one that isn't mentioned here, you can get the syntax and
information about the command from the online help.
Example:
look
The Note Editor
Commands:
say w*hat
emote mode
[string|list]
lis*t [] [nonum] e*dit
ins*ert [] ["] save []
n*ext,p*rev [n] ["] abort
enter q*uit,done,pause
del*ete []
f*ind /[/[c][]]
s*ubst //[/[g][c][]]
m*ove,c*opy [] to
j,joinl []
fill [] [@ ]
---- Do `help ' for help with a given command. ----
::= $ (the end) | [^]n (above line n) | _n (below line
n) | . (current)
::= | - | from | to | from
to
::= n | [n]$ (n from the end) | [n]_ (n before .) | [n]^
(n after .)
`help insert' and `help ranges' describe these in detail.
The first things after getting a list of commands that you will want
to do is use the list command. This will show you your description,
and give you the line numbers of each part of your description.
Whenever you wish to see this listing, you can use this command.
Example:
list
1: A very kindly wizardess who bears an uncanny resemblance to
programmer Kimberly. She's always happy to help, so just ask if
you need some.
__2_ You can find out a bit more about me by typing: @info
Hobbes*
^^^^
Once you are at this point you have a variety of choices depending on
what you wish to do. The next section will provide you with
directions to follow, depending on what you are trying to accomplish.
Adding to the end of your description
-------------------------------------
To continue on with your description, or to add thoughts that have
later come to mind, you use the following command.
"your text here (return)
"I am very fond of science fiction shows, expecially those that
involve space travel. (return)
You will then see:
line ? added
You can continue to add as many lines as you wish this way. Each
line added will look like a separate paragraph in your description.
Example:
"Some people think I never sleep, but that isn't really true.
Line 3 added.
list
1: A very kindly wizardess who bears an uncanny resemblance to
programmer Kimberly. She's always happy to help, so just ask if
you need some.
2: You can find out a bit more about me by typing: @info
Hobbes*
__3_ Some people think I never sleep, but that isn't really
true.
^^^^
Formatting
----------
Some basic formatting you may wish to do is indentation or blank
lines between paragraphs. These can be accomplished as below.
Indenting
---------
To indent you must place the indent inside of the quotation mark
" I really like science fiction shows....
Blank lines
-----------
To place a blank line between paragraphs, you place a quotation mark
( " ) and then hit the return. You will be told that the line has
been added.
"I really like science fiction shows....
line 1 added
"
line 2 added
"A favorite pastime of mine is....
line 3 added
This will appear in your document as:
I really like science fiction shows...
A favorite pasttime of mine is.....
Deleting and inserting into your description
--------------------------------------------
Sometimes you will want to delete a line (paragraph) or insert in the
middle of your document. To do this you will:
Deleting
--------
As pointed out above, when you do a list on your description, you
will note that each section has a number next to it. When deleting,
the least amount you can delete at a time is a line. If you wish to
delete more then one line, you can specify the range you wish to
delete.
WARNING: When you are deleting, make sure that you redo a list
between deletions, the line numbers will change as the editor will
renumber the strings of text.
1: A very kindly wizardess who bears an uncanny resemblance to
programmer Kimberly. She's always happy to help, so just ask if
you need some.
2: You can find out a bit more about me by typing: @info
Hobbes*
__3_ Some people think I never sleep, but that isn't really
true.
^^^^
To delete a line:
del
del 2
To delete a range:
del -
del 2-3
Inserting
---------
When inserting, you will have to look at the list to decide where you
wish to insert. When you delete a line, the insertion point will
automatically be placed above the line you deleted. If you wish to
move the insertion point, you must use the following:
ins ^n (places the insertion point above the number (n))
ins ^3 (you would insert the next line, before line 3)
ins _n (places the insertion point below the number (n))
ins _3 (you would insert the next line after line 3)
ins$ (places the insertion point back at the end of the
description)
Example:
list
1: A very kindly wizardess who bears an uncanny resemblance to
programmer Kimberly. She's always happy to help, so just ask if
you need some.
2: You can find out a bit more about me by typing: @info
Hobbes*
__3_ Some people think I never sleep, but that isn't really
true.
^^^^
ins 2
__1_ A very kindly wizardess who bears an uncanny resemblance to
programmer Kimberly. She's always happy to help, so just ask if
you need some.
^^2^ You can find out a bit more about me by typing: @info
Hobbes*
Please note in the above examples, you can tell where the insertion
point is by the line and little caret (^^^) marks underneath it.
After you have placed the insertion point where you would like it,
you input lines the same way as described above using the ( " ).
Substitution
------------
Sometimes you will want to just change a word or a group of words in
a line, and not want to have to delete the whole line. To do this
you will want to use the substitution command. You will go through
entering the description you wish to edit in the same way, use the
list command to get a list of the line number for each string. then
you will use the following syntax to substitute:
s///
s/Eaggles/Eagles/3
Example:
Let's change the words `a bit' to the word `some' in line 2.
list 2
^^2^ You can find out a bit more about me by typing: @info
Hobbes*
s/a bit/some/2
^^2^ You can find out some more about me by typing: @info
Hobbes*
Note: When you are using the substitution command, you need to keep
in mind that the parser will look for the first occurance of the
word, words you wish to change. If the word you wish to change is
not the first occurance, you will need to include words around it to
make it unique.
Getting out of the editor
-------------------------
Once you have finished your changes, you must save them, by just
typing: save and pressing the enter key. To then leave the editor,
type: done.
Example:
save
Text written to "Hobbes*"(#2305).description in text mode.
done
The Upstairs Hallway Landing
You're standing at the edge of a large landing which overlooks
the main entry way of Hobbes' Habitat. To your right is a set
of glass doors with a large sign above them which says: The
Spa. There is a large wooden planter with an untold number of
multi-colored pansies in the corner.
Kimberly is here, dozing.Obvious exits: down and Spa
Enter Mode
----------
As mentioned in the earlier interaction section about entering single
or multi-line input, you can use the enter mode in the editor. This
is not recommended, because it limits your ability to get outside
help should you run into a problem. If you end up in the enter mode
by accident (which would be done if you type in: enter while in the
editor, you would be prompted with:
[Type lines of input: use ' . ' to end or ' @abort ' to abort
the command]
This command does allow you to add multiple lines of information
without putting the " in front of each line. But besides limiting
your access to getting help while in the editor, it also is very easy
to forget to put the ' . ' (period) on a separate line to end the
session, and if you don't --everything you type will be inputted
until the parser sees this symbol.
FEATURE OBJECTS
---------------
Feature objects (fo's, for short) are a way to package groups of
verbs that players may selectively decide to add to their character.
By adding a feature, your character acquires the ability to invoke
the verbs associated with the feature. By deleting a feature, you
can revoke that ability. For example, the carpal tunnel feature
object, allows you to use shortcuts when typing, such as the command
``sa'' for ``say'' and ``em'' for ``emote''. (These shortcuts help to
eliminate the use of the shift and control keys, and therefore reduce
stress on tendons on most keyboards.)
Below is a listing on what each feature does. Some of the features
are already on your character by default, others will have to be
added.
To add a feature:
@add-feature
@add-feature #386 (carpal tunnel feature)
To remove a feature:
@remove-feature
@remove-feature #386
This is a brief list of some of the main features that you may be
interested in adding. Extended help on the verbs available on any
feature object can be obtained by typing:
help
Keep an eye on news articles for any new features that are being
added.
* #74 Login Watcher - Allows you to see when people connect and
disconnect.
* #68 Stage Talk - Allows you to do some extra emoting and non-
verbal actions (on by default)
* #69 Think - Allows you to create thought bubbles like in a comic
strip .oO(oh my) (on by default)
* #386 Carpal Tunnel - Allows you to use short-cuts in typing to
add in the reduction of tendon stress. (see appendix for list of
shortcuts)
* #7780 Reflections - A journal to keep your reflections of Pueblo
(see below for example)
* #384 pasting - Allows you to copy something and send it to
another player. (see below for example and syntax).
Example of Reflections use:
use journal
Choose a journal activity by number:
1. write 3. read_all 5. erase
2. read 4. scan 6. contents
[Type in the number of your choice. or `@abort' to abort the
command.]
Pasting Feature:
---------------
Usually the pasting feature is used by highlighting a section of text
within your windowing environment, and then using the copy command to
place it in as a pasted section, although you can type in text that
you wish to paste to another player also. The syntax to use the
pasting feature is:
To paste to everyone in the room:
@paste
At this point you will be prompted with and enter prompt:
[Type lines of input: use ' . ' to end or ' @abort ' to abort
the command]
Here you either use the copy command in your windowing environment or
editing program to input text, or you will type in what you wish to
send out. When you are finished, you must remember to place in the
period ( . ) on its own line to end the command.
To send a paste to another player and receive a copy of it yourself:
@pasteto2
Example:
@pasteto2 ql
[Type lines of input; use `.' to end or `@abort' to abort the
command.]
A little poem for you,
because I'm just like you,
I'm eating pop-tarts too.
And using @pasteto2.
.
---------------------Private message to quantum-leaper----------
A little poem for you,
because I'm just like you,
I'm eating pop-tarts too.
And using @pasteto2.
--------------------------------end message---------------------
Done @pasting.
************************************* =
Intermediate MOOing
*************************************
CREATING OBJECTS
----------------
You can have lots of fun in MOO by creating objects for your MOO
home, or for your MOO character! In this section, you will read
about creating objects based on already existing `parent' objects.
Parent Objects - What are they?
-------------------------------
Children in MOO, much like in real life, inherit lots of behaviours
and attributes from their parents. In MOO that means that if there
is an object which has been defined as `fertile', it can be a parent
(and thus have children.) What does this mean in practical terms?
It means that if you create an object with a parent of (for example)
$container, then your new object will be just like its parent! You
can put things in it, take things out - all the same things that
could be done with the parent $container, you can do with your new
object!
Unlike real life, you can change the parent of a child object if you
want to at a later time, changing all the behaviours and attributes
of that object. Be careful doing that though! You will lose any
customization that doesn't fit with the new parent!
Two Kinds of Parents
--------------------
There are two kinds of objects that can be a parent. Objects which
have a name you can use at any time, and objects which you must refer
to by number. Objects with a name that can be used at any time are
considered part of the `core' of the MOO. They have been `corified.'
What does this mean to you? Well, just keep it in mind and read
on...
@create - the command
---------------------
The basic format of the command is:
@create called [,
aliases]
Examples:
@create $thing called Soft Pillow, pillow
@create $container called Treasure Chest, chest
@create $note called ToDo List
@create #4729 called Cat Trivia Sheet, cts
You should notice that the first three examples use a word that
starts with a $ as the parent-object, whereas the last one uses a
number. Why? Well, remember the above discussion about two kinds of
parents? Those are the two kinds. $thing, $container and $note are
all `corified' so you can call them by name (corified objects always
have a $ in front of them.) Non-corified objects have to be referred
to by # unless they are in the room with you, or in your inventory.
Corified Objects you can use in @create
---------------------------------------
Here are the corified objects you can create, and brief descriptions
for each of them. You can find out more (in general) by typing: help
while online.
* $thing - something that doesn't fall into any other predefined
category.
* $container - something that can contain other things. Good for
boxes, bags, knapsacks, etc. in which to place and store other
objects.
* $openable_container - same as $container except can be opened
and closed, as well as locked.
* $note - something to hold basic text on. You can write on your
notes, read your notes, and so can others (unless you encrypt your
note!)
* $letter - (like $note but can be 'burned' by anyone)
* $window - really a special kind of $exit which can be opened and
closed, and which is transparent. This isn't usually @created, but
it used in @chparent commands (see next section.)
* $door - just like a $window, except it's not transparent. If
the door is closed you can't see through it. Again, as a special
kind of $exit you are more likely to use this in @chparent, not
@create.
* $furniture - an object of this type allows you to set the number
of seats on it, sit on it, shove someone off of it (!) and stand up
from it. $furniture also automatically integrates (see housing
section for more on integration) into the room it's in. $furniture
has many @messages (see housing section) you will want to set to make
your $furniture more interesting.
* $food - children of $food can be smelled, tasted eaten/drank
through commands such as smell chocolate, taste chocolate, eat
chocolate. When they are consumed (through either the command eat or
drink) they are actually gone. If you want to make interesting food
that you can share with others you will probably want to:
@create $food called Original Chocolate Bar, ocb customize:
@consume ocb is "You chomp on the chocolate bar and now it's all
gone!"
@oconsume ocb is "chomps down %np chocolate bar and now it's
gone!"
@smell ocb is "mmmm...what a choclately smell!"
@osmell ocb is "is smelling a chocolate bar!"
@taste ocb is "You lick the chocolate bar lightly and smile."
@otaste ocb is "just licked %np chocolate bar and smiled."
Now you can create children of your chocolate bar to eat,
or give to others, and they'll all have the same wonderful
messages you just spent so much time on!
@create ocb called Chocolate Bar, cb
Remember not to eat your original!
* $apparel (aliases: $clothes, $clothing) - objects with this
parent can be worn (command: wear) and taken off (take - off).
The also automatically integrate into player, room and container
descriptions.
* $bottomless_container (alias: $bc) - objects with this parent
can contain things, like a $container, with a major difference: when
you take an item from the container, the original stays in and you
get a duplicate (a child!) Items in the container MUST be fertile!
* $household_event (alias: $hev)
* $generic_db
(More soon - this section still under construction)
MOO CLIENTS
-----------
The emacs client
----------------
If you already use the general-purpose editor emacs, you may find it
more convenient to use the mud mode in emacs. This file sets things
up so that a separate process is run (under emacs) which communicates
with the MUD. Emacs creates a buffer which ``fronts'' for this
process: text sent to the process by the MUD is displayed in the
buffer, and text typed by you in the buffer is sent to the MUD. If
you kill this buffer, then the underlying process also vanishes, and
the connection to the MUD is dropped. If you know how to write emacs
code, you can also arrange for your own code to be called each time a
line is received from the MUD; in this way you can customize how that
information is displayed on your screen.
To use the mud mode in emacs, load the file mud.el into emacs. (If
this file is not already installed in your system, you may ftp it
from the directory pub/MOO/clients on parcftp.xerox.com. Copy it
into your local directory, and load it into emacs using the M-x load-
file command.)
It is possible that the computer you are running emacs on is behind a
firewall. For example, at Xerox PARC, we have a firewall between our
computers and the Internet. This means that we have to load another
file, proxy.el, that sets up a proxy service to let us cross the
firewall. If you are behind a firewall, check with your local
systems administrator for ways to get through.
Setting up addresses for mud.el
-------------------------------
When you want to open a connection to Pueblo (or any other MUD, for
that matter) from within emacs, mud.el will want to know the address
of Pueblo. It looks for this information in the .mud file in your
home directory. You can create this file using any editor you like,
including emacs.
This file contains three kinds of lines. The first kind describes
attributes of various MUDs. For Pueblo, you will need the line:
server pueblo MOO 192.216.54.9 7777
This says that pueblo is a MOO server accessible via telnetting to
the host 192.216.54.9, at port 7777. You may add this information for
as many MUDs as you like, one per line.
The second kind of line is optional and contains your character name
and password for a MUD. If you provide this information, then it is
possible for emacs to automatically log into the MUD on your behalf.
If on Pueblo your character name is john, and your password is agnes,
you would add the line:
pueblo john agnes
If you are going to enter your password in this file, then you may
want to make sure that the file is not readable by anyone else. On a
UNIX system, this typically can be achieved by executing the command:
chmod 700 ~/.mud
Finally, the third (optional) line describes which should be your
default server. You may want to add the line:
default-server pueblo
To summarize: if you are only interested in the pueblo server, then
your .mud file should contain exactly the lines:
server pueblo MOO 192.216.54.9 7777
pueblo john agnes
default-server pueblo
Connecting to pueblo
--------------------
Now you are ready to connect to pueblo. Within emacs, type ``M-x
mud'', and hit return. You will be prompted for the server you want
to connect to. If you have declared your default to be pueblo in
your .mud file, you can simply hit return. Otherwise, type
``pueblo'', and then hit return. Now a new buffer will be created,
typically called *pueblo*, and your cursor will be placed in it; this
represents your connection to Pueblo. Type:
connect
If you have specified your name and password in the .mud file, then
you can avoid connecting manually by executing the command C-u M-x
mud, instead of M-x mud.
At any time, you can close your connection to the MUD by deleting the
buffer (e.g. by using C-x k), or by typing C-c C-c.
Note too that you can have as many MUD connections open as you like.
Just type ``M-x mud'' to open another connection. (Note that usually
you can have only one connection per character per MUD.)
Once you are connected, every line you type is sent to the MUD when
you hit return. Responses from the MUD are entered automatically
into the buffer before the cursor. Sometimes you may receive text
from the MUD even as you are composing a message ... you will find
that the text gets added before the line you are composing. Of
course you can use the full power of emacs to move around in the
buffer, search for text, cut and paste, edit your text, save it out
in a file on the local disk, etc. For more information, consult your
emacs manual, or the online emacs documentation (``M-x info '').
Mud-mode features
-----------------
Three features of mud-mode are worth noting.
First, as with any other mode, you can type M-x describe-mode to get
a description of the special commands available to you in the MUD
buffer. Note in particular that it is possible to set a variable
(mud-show-page) so that the Pueblo buffer pops up whenever a page
arrives. This is useful if you are working on other buffers within
emacs, but want to know when someone talks to you within Pueblo.
Second, emacs maintains a list of the last several commands that you
have sent to the MUD. Type ``ESC p'' to re-enter the last command
you typed in at the current prompt. Hit ``'', and the command
will be sent down to the MUD. Or hit ``ESC p'', and the command will
be replaced with the second last command you typed in. You can hit
as many ``ESC p '' as you want (up to the maximum number of commands
you have typed). If you have gone past the command you wanted, type
``ESC n'' to move forward; this too can be repeated as often as
necessary and possible.
Third, it is possible to arrange for all the editing to happen within
emacs. This is called ``local editing'', and is a major win because
the editing available within Pueblo is very primitive in comparison.
To be able to do this, type in your Pueblo buffer:
@edit-options +local
This tells the server not to invoke the Pueblo editor whenever you
type the commands @edit, @noteedit, @verbedit or @send (for mail).
Instead, the text is shipped to emacs, and another buffer pops up
with the text. You can now edit the text in the buffer using usual
emacs commands. When you are done, type C-c C-c to send the text
back to the server, and kill the buffer; type C-c C-s to send it back
but keep the buffer. As usual, you can type M-x describe-mode in
this buffer, and get the list of special commands defined for the
buffer.
While you are editing text, you are free to move back to the Pueblo
buffer, and execute other commands there. In particular, you can
edit some other object as well; indeed you can have as many buffers
open editing Pueblo objects as you like. You do not have to finish
editing these buffers in the order in which you started editing them.
Essentially each buffer maintains its own connection with the
underlying MUD process. Note however, that if you kill the
underlying MUD process, then the buffers in which you are editing MUD
objects are no longer connected to the MUD.
A word of caution. If you @edit an object, say foo, and then change
the text in the buffer that pops up, and do not save it out, and then
again type @edit foo in the pueblo buffer, you *will* lose the
changes you had made earlier in the pop-up buffer. Emacs kills the
pop-up buffer, and then pops up another one with the same name,
reloaded with information from the server. Since you did not save
out the changes in the pop-up buffer, the state in the server did not
change, and you have now lost your changes.
************************************* =
Advanced MOOing
************************************* =
Object Oriented - What is the OO in MOO?
(coming soon to a Moo manual near you.)
The Parser - the Details
(coming soon to a Moo manual near you.)
Verbs - Moo Programming
(coming soon to a Moo manual near you.)
Leftovers...
(write something about any of these, submit it, and become famous!)
@audit
@typo/@suggest, etc...
Surprises - bugs!
Gopher Slates
spell/define
@qsend
admins, players, programmers, wizzes ... what's it all mean...
************************************* =
Appendix A - Cheat Sheet
************************************* =
This is a cheat sheet, not a tutorial - it is meant for quick
reference, not for teaching.
Communication:
say " page ' emote :
ex: say Hi there ex: page Hobbes Hey you! ex: emote
smiles broadly.
"Hi there 'Hobbes Hey you! :smiles
broadly.
shows up as:
Hobbes
smiles broadly.
whisper
ex: whisper "psst, how are you?" to Hobbes
Movement:
Walk to Join
ex: Walk to Kitten Klatch ex: join Hobbes
Home
ex: home
Leave Pueblo
ex: @quit
Perception:
Look L [] @show examine exam ex
ex: look @show Bathing Suit example: examine
puppy
look Hobbes exam couch
look machine ex gold
star
@examine @exam
example: @examine Siamese
@exam here
Special object words:
me
here
@messages
Every object has a variety of messages associated with it. You can
find them by typing:
@messages
ex: @messages here
@messages me
@messages Cat
You can set them in exactly the same way they are displayed:
@ is
ex: @page_echo me is "You've just paged Hobbes"
@doing me is "Having Fun!"
@drop_succeeded Cat is "Kitty jumps out of your arms"
In general messages which have a prefix of the letter 'o' are
messages which are shown to others in the room.
ex: @odrop_succeeded Cat is "%Tn gracefully %t:(jumps) out of
%Nd's arms and starts to lick %tp paw."
The funny looking % stuff is pronoun substitution stuff. The cheat
sheet for 2 letter pronoun substitution follows (note: this was
produced by typing `help two-letter' - more information is there).
Pronoun Cheat Sheet
* In most cases, a substition consists of three elements:
* The % sign, indicating that a substitution should be made.
* A symbol indicating the object that should be considered.
* A symbol indicating what about that object to substitute.
The Object Specifier
The object specifier is the letter that follows the % sign. Consider
the string:
"%Td %t:(looks) at %dd oddly."
In `%Td' and in `%t:', the object specifer is `t'. In `%dd', the
object specifer is `d'.
The possible letters and the objects that they correspond to include:
t - represents the thing where the verb callig :pronoun_sub()
is stored
n - represents the player that started the command
d - represents the direct object of the initial command
i - represents the indirect object of the initial command
l - represents the location of the player
As an example, If Munchkin typed this command:
put duck in pond
and the duck had this as a @put_in_water message:
"%Nd %n:(puts) %td in %id."
Then:
%Nd would get the `D' information on Munchkin.
%n:(puts) would conjugate `puts' according to Munchkin's gender.
%td would get the `d' information from the duck.
%id would get the `d' information from the pond.
The Information Specifier
The character following the object specifier is the information
specifier. It specifies what sort of information to get about the
object. It can be any of these characters:
n - the object's name ("Susan", "duck", "king and
queen")
d - definite-article ("Susan", "the duck","the king
and queen")
i - indefinite-article ("Susan", "a duck", "a king and
queen")
o - the objective pronoun ("her", "him", "them")
p - possessive adjective ("her", "his", "their")
q - possessive pronoun ("hers", "his", "theirs")
r - reflexive pronoun ("herself", "himself", "themselves")
s - subjective pronoun ("she", "he, "they")
Sometimes, several characters follow the object specifier:
'i - indefinite possessive ("a duck's")
'd - definite possessive ("the duck's")
'n - possessive name ("duck's")
In using any of these, you can capitalize the object specifier to
have the phrase capitalize--for example, `%Nd' might become "The
duck". If you capitalize both the object specifier and the
information specifier (`%ND'), you'll get all caps--"THE DUCK".
Information Specifiers for Verb Conjugation
You often want to insert a verb into a sentence, but the conjugation
depends on the context that it's used in. Give this as the
information specifer in order to have pronoun_sub conjugate a verb:
:(foos) - conjugate the verb `to foo'
For example:
"%ns %n:(runs)"
will result in "he runs", "she runs", or "they run", depending on the
gender of the player who called the verb.
If you capitalize the verb, the result will be capitalized:
"%ns %n:(Runs)"
Features:
As new features become available they will be listed on this cheat
sheet. Extensive instructions on the features should be gotten by
getting the help text on the feature itself.
*** Login Watcher ***
Allows you to see when people connect/disconnect
@add-feature #74
@login (to toggle the login watcher)
type help #74 for more info.
*** Stage Talk ***
All players have this feature by default
Allows for interesting ways of expressing yourself. Type help #68
for more info.
*** Think Feature ***
All players have this feature by default
Allows for 'thought bubbles' like in cartoons.
ex: think I wonder what they're thinking...
Hobbes . o O ( I wonder what they're thinking... )
you can use the % as a short cut:
ex: % I'm hungry
Hobbes . o O ( I'm hungry )
*** Carpal Tunnel Feature Object ***
@add-feature #386
Has all sorts of short-cut keystrokes for common moo phrases - most
do not require the use of the 'shift' keys, avoiding added strain to
tendons, etc.
Type help #386 for more info.
Construction
@create called
ex: @create $thing called Red Rubber Ball
@create $thing called Red Rubber Ball, Ball
@create $note called Things I was thinking today, tiwtt
@create $food called diet coke
Existing core items you might create: (see `help - ' for more
details)
* $thing
* $container
* $openable_container
* $note
* $letter (like note but can be 'burned' by anyone)
* $window
* $door
* $sittable
* $furniture
* $food
* $apparel (aliases: $clothes, $clothing)
* $bottomless_container (alias: $bc)
* $household_event (alias: $hev)
* $generic_db
Fertile objects you can create using object #:
* Cat (#2139)
* Dog (#2140)
* Multiple Item Dispenser (#1012)
* Quizzing Dispenser (#1175)
* Instructions Tablet (#1251)
* Gopher Slate (#299) (more info further down in the cheat sheet)
* Trivia Game Sheet (#4729)
* Generic Car (#7005)
ex: @create #2139 called Shadow
@create #1012 called Coke Machine
@create #299 called My Gopher Slate, slate
Please describe your objects:
Short descriptions:
@describe
as
ex: @describe Red Licorice as "Red and shiny with a waxy
texture. Mmmm!"
Longer descriptions:
@edit (this throws you into the editor - enter lines
of text there)
ex: @edit Bedroom
"You are in a beautiful bedroom. It has white walls and a high
ceiling.
"There is a large four poster bed against one wall, with a white
down comforter.
"There is a faint smell of fresh flowers in the air.
save
done
@digging rooms
@dig |
ex: @dig North | South to North Pole
@dig East, e | West w to East Coast, EC
@dig Bedroom...,bed | Living Room... to King's
Bedroom
NOTES: if you are digging from a location owned by someone else your
exit and entrance won't become active until the other player does an
@add-entrance and @add-exit for your entrances and exits. Do
yourself a favor and write those numbers down right after you do the
@dig.
Programming cheat sheet
Adding a property:
@property .
ex: @property tire.is_flat 0
@property cat.sleeping 1
@property toaster.watts 900
@property toaster.shock_msg "You just got a bad shock!"
Adding a verb:
@verb : [ [ [] ] ]
ex: @verb ball:bounce this none none
(Usage will be 'bounce ball')
ex: @verb ball:throw this to any
(Usage will be 'throw ball to Hobbes')
ex: @verb pantry:"store put" any in this
(Usage will be 'store food in pantry' or 'put food in pantry')
(Verb synonyms need to be put in quotes, separated by a space, as
indicated above.)
ex: @verb ball:check_status this none this
(Usage will be ONLY from other verbs on ball - that's what 'this
none this' indicates. You will call the verb like this:
this:check_status() you could also pass arguments by calling it
like this: this:check_status(some_arg) )
NOTES: The MOO server is able to do a small amount of parsing on the
commands that a player enters. In particular, it can break apart
commands that follow one of the following forms:
VERB
VERB DIRECT-OBJECT
VERB DIRECT-OBJECT PREPOSITION INDIRECT-OBJECT
Real examples of these forms, meaningful in the LambdaCore database,
are as follows:
look
take yellow bird
put yellow bird in cuckoo clock
direct and indirect object can be one of: 'none', 'this', or 'any'
The complete list of prepositions recognized by the command-line
parser: (generated by typing 'help prepositions'):
with/using
at/to
in front of
in/inside/into
on top of/on/onto/upon
out of/from inside/from
over
through
under/underneath/beneath
behind
beside
for/about
is
as
off/off of
When the code for the program begins execution, the following built-
in variables will have the indicated values:
player an object, the player who typed the command
this an object, the object on which this verb was
found
caller an object, the same as `player'
verb a string, the first word of the command
argstr a string, everything after the first word of the
command
args a list of strings, the words in `argstr'
dobjstr a string, the direct object string found during
parsing
dobj an object, the direct object value found during
matching
prepstr a string, the prepositional phrase found during
parsing
iobjstr a string, the indirect object string
iobj an object, the indirect object value
Programming a verb
@edit :
ex: @edit ball:bounce
@edit ball:throw
@edit pantry:store
(you will now be in the moo editor, unless you have client editing -
the compile process is slightly different for each.)
Syntax examples for verb code
The direct object and indirect object are referred to as dobj and
iobj respectively. Their string values are referred to as dobjstr
and iobjstr.
Checking the value of the dobjstr:
if (dobjstr != "doodle")
player:tell("You didn't say the magic word \"doodle\"!");
else
player:tell("Poof! you said the magic word!");
endif
Checking the value of a property:
if (this.is_flat == 0)
player:tell("The tire is full of air.");
else
player:tell("The tire is flat.");
endif
Looping through a list:
for obj in (player.owned_objects)
player:tell("you own "+tostr(obj) + " " + obj.name)l
endfor
Useful code utilities/functions/object properties
Properties
A "property" is a named "slot" in an object that can hold an
arbitrary MOO value. Every object has eight built-in properties
whose values are constrained to be of particular types. In addition,
an object can have any number of other properties, none of which have
type constraints. The built-in properties are as follows:
name a string, the usual name for this object
owner an object, the player who controls access to it
location an object, where the object is in virtual reality
contents a list of objects, the inverse of `location'
programmer a bit, does the object have programmer rights?
wizard a bit, does the object have wizard rights?
r a bit, is the object publicly readable?
w a bit, is the object publicly writable?
f a bit, is the object fertile?
Examples:
this.location
player.location
#123.name
this.aliases
Available verbs/utilities:
player:tell() - Displays a string of text to the player.
$you:tell() - Displays a string of text, after pronoun
substituion to everyone in the room - including player.
player:room_announce() - Displays a string of text to the other
players in the room.
player:tell_lines() - displays one or more lines to the player.
$code_utils:toobj();
$object_utils:ancestors()
$command_utils:suspend_if_needed(1);
listappend()
listdelete();
stuff = $command_utils:read();
stuff = $command_utils:read_lines();
player:my_match_object()
$string_utils:match_object()
$object_utils:isa(object, #7)
$string_utils:pronoun_sub()
Creating and setting up a new item and giving it to the player:
x = player:_create(#582);
x:set_name("Bathing Suit");
x:set_aliases({"Bathing Suit","suit"});
x:set_description("A simple, yet attractive bathing suit, just
your size.");
move(x, player);
Useful builtin functions (type 'help builtin' for complete list)
typeof()
players()
tostr()
toobj()
recycle() (use $recycler:_recycle() instead)
random()
valid()
pass(@args)
Gopher slate cheat sheet
Create a gohper slate by typing something like:
@create #299 called Hobbes' Gopher Slate, slate, hgs
Pick items on the slate with:
pick 4 on slate
See the next screen of multiple page info with:
next on slate
Back up a level with:
back slate
Reset to the beginning with:
reset slate
Check out the stuff in the parcftp hierarchy - there's more moo stuff
there!
************************************* =
Appendix B - Computer Terminology
************************************* =
(coming soon to a Moo manual near you.)
************************************* =
Appendix C - Editor Commands
************************************* =
The Note Editor
Commands:
say w*hat
emote mode
[string|list]
lis*t [] [nonum] e*dit
ins*ert [] ["] save []
n*ext,p*rev [n] ["] abort
enter q*uit,done,pause
del*ete []
f*ind /[/[c][]]
s*ubst //[/[g][c][]]
m*ove,c*opy [] to
j,joinl []
fill [] [@ ]
---- Do `help ' for help with a given command. ----
::= $ (the end) | [^]n (above line n) | _n (below line
n) | . (current)
::= | - | from | to | from
to
::= n | [n]$ (n from the end) | [n]_ (n before .) | [n]^
(n after .)
`help insert' and `help ranges' describe these in detail.
The Verb Editor
Commands:
say w*hat
emote e*dit :
lis*t [] [nonum] com*pile [as
:]
ins*ert [] ["] abort
n*ext,p*rev [n] ["] q*uit,done,pause
enter
del*ete []
f*ind /[/[c][]]
s*ubst //[/[g][c][]]
m*ove,c*opy [] to
j,joinl []
fill [] [@ ]
---- Do `help ' for help with a given command. ----
::= $ (the end) | [^]n (above line n) | _n (below line
n) | . (current)
::= | - | from | to | from
to
::= n | [n]$ (n from the end) | [n]_ (n before .) | [n]^
(n after .)
`help insert' and `help ranges' describe these in detail.
Appendix D - Carpal Tunnel Feature Commands
HELP ON THE CARPAL TUNNEL FEATURE OBJECT
=========================================
hands hurt--use this.
sa em emm -* =*
===============
sa and - are say
em and = are emote
emm and == are emote with no space
y n no ty*po
============
y is yes.
no is no.
ty is sorry
w wa nd h ns gg gr si*gh sm
============================
wa [player] is wave.
nd [player] is nod.
ns [player] is nod solemnly.
h [player] is heh.
gr [player] is grin.
sm [player] is smile.
gg [player] is giggle.
si [player] is sigh.
/*
==
/[player] [text] asks a question.
ow
==
ow [player] is my hands (or fingers or wrists) hurt.
wh*uggl
=======
shorthand for whuggle
,*
==
, is <