--[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 <