PennMUSH Community

root/1.8.3/trunk/game/txt/hlp/penntop.hlp

Revision 1167, 82.4 kB (checked in by shawnw, 5 months ago)

Merge devel into trunk for p6 release

Line 
1 & help
2 This is the index to the MUSH online help files.
3
4   For an explanation of the help system, type:    help newbie
5
6   For the list of MUSH commands, type:            help commands
7   For the list of MUSH topics, type:              help topics
8   For an alphabetical list of all help entries:   help entries
9   For a list of entries that match a pattern:     help <wildcard>
10   For information about PennMUSH:                 help code
11  
12   For a list of flags:                            help flag list
13   For a list of functions:                        help function list
14   For a list of attributes:                       help attribute list
15   To see the configuration of this MUSH:          @config
16
17   On many MUSHes, list local commands with:       +help
18
19 If there are any errors in the help text, please notify a wizard in the
20 game, or send mail to pennmush-bugs@pennmush.org, which is the address
21 of the team who develop PennMUSH (and its distributed help files) but
22 probably have no relation to this MUSH in particular.
23
24 & newbie
25
26   If you are new to MUSHing, the help files may seem confusing. Most of
27   them are written in a specific style, however, and once you understand
28   it the files are extremely helpful.
29
30   The first line of a help file on a command or function will normally be
31   the syntax of the command. "Syntax" means the way the command needs to
32   be typed in. In the help files, when the syntax of a command is described,
33   square brackets [] mean that that part of the command is optional and
34   doesn't have to be typed in. Also, pointy brackets <> mean that that part
35   of the command needs to be replaced with a specific piece of information.
36  
37   You should not type the [] or <> brackets when entering a command.
38  
39 (continued in help newbie2 -- type 'help newbie2' without the single quotes)
40  
41 & newbie2
42
43   For example, the syntax of the help command is:
44  
45   help [<topic>]
46  
47   What this means is that to get help, you would type first the word "help" and
48   then you could optionally type the name of a more specific topic in order
49   to get help on that topic. Just typing "help" will work too (that's why the
50   <topic> part is optional).
51  
52   Some common commands that you should look at help for are:
53  
54     look   say    go    page    pose    take     give    home
55  
56   Just type help <command> for help. Example: help page
57  
58 (continued in help newbie3)
59 & newbie3
60
61   There is help available on every standard MUSH command. If you see a command
62   or someone mentions one to you that you want to know more about, try just
63   typing: help <command name> -- that will most likely bring up the help
64   file on it.
65  
66   Please note that just because there is help available on a command does
67   not necessarily mean that the command can be used on this MUSH. The
68   siteadmin of the MUSH can choose to turn off some commands. If there's
69   something that you would like available, and it isn't, please ask a wizard
70   why not.
71  
72   It is also highly recommended that any new player read the MUSH manual,
73   written by Amberyl. It is available by anonymous FTP from:
74      ftp.pennmush.org
75   in the directory:
76      /pub/PennMUSH/Manuals
77
78 & topics
79 Help is available on the following topics:
80
81   ACTION LISTS             ANCESTORS                ANONYMOUS ATTRIBUTES
82   ATTRIB-OWNERSHIP         ATTRIBUTES               BEING KILLED
83   BOOLEAN VALUES           CHAT                     CLIENTS
84   CONTROL                  COPYRIGHT                COSTS
85   CREDITS                  DBREFS                   DROP-TO
86   ENACTOR                  EVALUATION               EXECUTOR
87   EXITS                    FAILURE                  FLAGS
88   FUNCTIONS                GENDER                   GLOBALS                 
89   HERE                     HOMES                    INTERIORS               
90   LINKING                  LISTENING                LISTS                   
91   LOOPING                  MASTER ROOM              MATCHING
92
93 (continued in help topics2)
94 & topics2
95   ME                       MONEY                    MUSHCODE
96   NON-STANDARD ATTRIBUTES  PARENTS                  POWERS
97   PUPPETS                  QUEUE                    REGEXPS
98   REGISTERS                SEMAPHORES               SETTING-ATTRIBUTES       
99   SPOOFING                 STACK                    STRINGS                 
100   SUBSTITUTIONS            SUCCESS                  SWITCHES                 
101   TYPES OF OBJECTS         USER-DEFINED COMMANDS    VERBS                   
102   WARNINGS                 WILDCARDS                ZONE MASTER ROOMS       
103   ZONE MASTERS             ZONES 
104  
105 Type "help <topic name>" for help.
106 & ACTION LISTS
107   Action lists are simply lists of actions that are all executed at once.
108   You can have an action list in a user-defined command, in one of the
109   a-attributes, or in many other commands. Action lists may not be
110   executed directly from a client, except in the case of a command
111   which forces a re-insertion into the queue such as @switch or
112   @dolist.
113
114   Actions in an action list are separated by semicolons. Each action is
115   simply a separate MUSH command. If part of the action (such as the text
116   in an @emit, for example) contains a semi-colon or comma, you may need
117   to enclose that part in curly braces {}. You can also nest action lists
118   inside each other by enclosing each action list in braces {}.
119
120   Substitution will be performed on the contents of action lists before
121   they are executed.
122
123 (continued in help action2)
124 & ACTION2
125   Example 1:
126     > @asuccess Gift = @pemit %#={The box pops open; surprise!} ;
127         @name me=New Toy ; @desc me={A shiny new toy, just for %N!}
128     > take gift
129     The box pops open; surprise!
130     > look new toy
131     New Toy
132     A shiny new toy, just for Cyclonus!
133            
134   Example 2:
135     > &TEST me=$test:@emit {Testing; testing; one, two.} ;
136         @dolist 1 2 3={think {Test ##, success.} }
137     > test
138     Testing; testing; one, two.
139     Test 1, success.
140     Test 2, success.
141     Test 3, success.
142
143 See also: ATTRIBUTES, SUBSTITUTION, @asuccess, @dolist
144 & ANCESTORS
145   ANCESTORS
146
147   Objects can inherit attributes from other objects through the
148   use of parents. An object's parent, its parent's parent, its
149   parent's parent's parent, etc. constitute the object's "parent chain"
150   and lookups work the way up the chain until an inheritance occurs.
151
152   Ancestors are "virtual parents" that are assumed to be last on every
153   parent chain. There is one ancestor for each object type (room, exit,
154   thing, player), and @config lists the dbref of each ancestor object
155   (@config ancestor_room, etc.) Under normal circumstances, if an attribute
156   can't be retrieved from an object or any of its explicit parents,
157   the attribute will be looked for on the appropriate ancestor.
158   The ORPHAN flag may be set on an object to cause lookups on that
159   object to ignore ancestors (like the pre-ancestor behavior).
160
161   Ancestors may themselves have parent chains, but these are (obviously)
162   not virtually terminated by ancestors.
163
164   Note that the choice of which ancestor to look up is based on the
165   type of the *child* object, as is the check of the ORPHAN flag.
166   Also note that ancestors are *not* checked for $-commands or
167   ^-commands; you should use the master room for global commands,
168   instead.
169
170 See also: PARENTS, ORPHAN
171 & ANONYMOUS ATTRIBUTES
172 & LAMBDA
173 & #LAMBDA
174   In many cases where a function expects a object/attribute pair
175   that refers to an attribute to evaluate, you can use the form
176
177   #lambda/<code>
178
179   instead, and the code will be treated as an attribute's body.
180   The code will normally be parsed twice, so special characters
181   should be escaped where needed.
182
183   These anonymous attributes should be used for short and simple
184   pieces of code. Anything long or complicated should go in an
185   actual attribute, for readability and maintainability.
186
187   See 'HELP ANONYMOUS2' for examples.
188 & ANONYMOUS2
189   A typical usage of anonymous attributes would be to convert
190   a list of dbrefs to names, as so:
191
192   >say map(#lambda/name(\%0), #3 #12 #23)
193   You say, "Joe Robert Sally"
194
195   Because the code is parsed twice, you can actually build parts of
196   it in place, which is very convenient. Consider this implementation
197   of a lattrval function, which is like lattr() but it only returns
198   non-empty attributes:
199
200   &lattrval me=
201    filter(#lambda/hasattrval([secure(before(%0, /))], \%0), lattr(%0))
202  
203   The first time '#lambda/hasattrval([secure(before(%0, /))], \%0)' is
204   parsed in a call like 'u(lattrval, #1234)', it is turned into
205   '#lambda/hasattrval(#1234, %0)', thus avoiding the need for a setq() or
206   the like to store the top-level %0 for use in a real attribute called by
207   filter(). However, this can lead to problems with evaluating un-trusted
208   code. Use secure() or escape() where neccessary.
209
210   See 'HELP ANONYMOUS3' for another example.
211 & ANONYMOUS3
212  
213   You can also use lit() to avoid having the code evaluated twice, if
214   needed. For example, this code, which returns all unlinked exits in
215   a room:
216
217   &lunlinked me=filter(lit(#lambda/strmatch(loc(%0), #-1)), lexits(%0))
218
219   This approach is useful both for security in making it harder to evaluate
220   a string that shouldn't be, and for making the code look nicer by not
221   having to escape percent signs, brackets, and other special
222   characters. However, it also makes it harder to build the code string on
223   the fly. Use what's most appropriate.
224      
225   See 'HELP ANONYMOUS4' for a list of functions that support anonymous
226   attributes.
227 & ANONYMOUS4
228   The following functions support anonymous attributes:
229  
230   filter()    filterbool()   fold()      foreach()   map()      mapsql()
231   mix()       munge()        sortby()    sortkey()   step()
232 & ATTRIB-OWNERSHIP
233   ATTRIBUTE OWNERSHIP
234  
235   The latest person to set an attribute on an object is the owner
236   of that attribute. If you lock an attribute, using the @atrlock command,
237   only the person who owns the attribute will be able to alter the
238   attribute. This allows you to create standard commands on objects and
239   then @chown them to others without letting them alter them.
240
241   Attribute ownership is NOT changed when the object itself is @chown'ed.
242   To change attribute ownership, you must use the @atrchown command.
243
244   You must control an object in order to set attributes on it.
245
246 See also: @atrlock, @atrchown, ATTRIBUTES
247 & ATTRIBUTES
248 & ATTRIBUTES LIST
249 & ATTRIBUTE LIST
250   Attributes with (*) after them are special, cannot be set by players,
251   and may only be visible to wizards or admin. For those attributes, there
252   is no @-command, so you can just type 'help <attribute name>' for help.
253   For all other attributes, type 'help @<attribute name>' for help.
254
255 Standard Attributes: (see @list/attribs for the complete list)
256   AAHEAR        ACLONE        ACONNECT      ADEATH        ADESCRIBE
257   ADISCONNECT   ADROP         AEFAIL        AENTER        AFAILURE
258   AHEAR         ALEAVE        ALFAIL        AMHEAR        AMOVE
259   APAYMENT      ASUCCESS      AWAY          CHARGES       COST
260   DEATH         DESCRIBE      DROP          EALIAS        EFAIL         
261   ENTER         FAILURE       FORWARDLIST   HAVEN         IDESCRIBE     
262   IDLE          LALIAS        LAST (*)      LASTIP (*)    LASTLOGOUT(*)
263   LASTSITE (*)  LEAVE         LFAIL         LISTEN        MOVE         
264   ODEATH        ODESCRIBE     ODROP         OEFAIL        OENTER       
265   OFAILURE      OLEAVE        OLFAIL        OMOVE         OPAYMENT     
266   OSUCCESS      OXENTER       OXLEAVE       OXMOVE        PAYMENT       
267   QUEUE (*)     RQUOTA (*)    RUNOUT        SEX           STARTUP       
268   SUCCESS       TFPREFIX
269
270 (continued in help attributes2)
271 & ATTRIBUTES2
272   An attribute is part of the code on an object that makes it unique. An
273   attribute can contain any sort of text -- from a single word, to a long
274   paragraph, to a piece of MUSHcode. Some attributes are standard in
275   PennMUSH. That means that their effects are pre-set.
276
277   Standard attributes can be set using one of the following commands:
278     @<attribute name> <object>=<content>
279     @set <object>=<attribute name>:<content>
280     &<attribute name> <object>=<content>
281
282   It is also possible to have non-standard attributes, which can be named
283   anything you like. Please see 'help NON-STANDARD ATTRIBUTES' for more
284   information on those.
285
286 (continued in help attributes3)
287 & ATTRIBUTES3
288   Any attribute name can be shortened, but a shorter forms run the risk
289   of conflicting with other attribute names.  This could result in you
290   setting an unwanted attribute.
291
292   For example:
293     @adesc me=think %N looks at you.
294   will set your ADESCRIBE attribute just as
295     @adescribe me=think %N looks at you.
296   would.
297
298   To see the attributes that are set on you or on any of the objects you own,
299   you should use the "examine" command. See 'help examine'.
300  
301 (continued in help attributes4)
302 & ATTRIBUTES4
303   Attributes can be owned by someone other than the object they are set on.
304   This allows the person to change the content of just that attribute while
305   not the rest of the object. Attributes can also be locked, which prevents
306   them from being changed by anyone.
307
308   In addition to the standard attributes with pre-set effects, there are
309   some special attributes that date from the days before you could set
310   non-standard attributes with any name you wanted. These are the
311   attributes VA-VZ, WA-WZ, XA-XZ. These attributes have no pre-set effects,
312   and were just to allow players to store any text or MUSHcode that they
313   wished in those attributes. Now that non-standard attributes are available,
314   it is highly recommended that you instead use them, since you can use
315   longer and descriptive names for attributes, which makes it much easier
316   to examine and work on objects.
317
318 See also: ATTRIB-OWNERSHIP, @set, examine, @atrchown, @atrlock, hasattr(),
319   get(), v(), NON-STANDARD ATTRIBUTES, SETTING-ATTRIBUTES, ATTRIBUTE TREES
320
321 & BEING KILLED
322  
323   Getting killed is no big deal. If you are killed, you return to
324   your home, and  all things you carry return to their homes. You
325   also collect 50 pennies in insurance money (unless you have >= 10000
326   pennies or you were killed via the Wizard slay command). See 'MONEY'. 
327   Generally, killing is not encouraged unless absolutely necessary.
328   It can be extremely rude and annoying.
329
330   Many MUSHes choose to disable the kill command.
331
332 See also: kill, slay, @death
333 & BOOLEAN VALUES
334
335   A boolean variable, for those of you not familiar with programming,
336   is a variable that is either true or false. Normally, a value of
337   1 is considered "true" and a value of 0 is considered "false". Many
338   MUSH functions return either 1 if they are true or 0 if false.
339   For example, the hasflag() function tests to see if an object has
340   a certain flag set on it. If
341         hasflag(<object>,<flag name>)
342   is true (the object has the flag), it will return 1. If it is false,
343   it will return 0.
344
345   Other functions expect to operate on boolean values. What they
346   consider "true" or "false", however, depends on the setting of
347   the "tiny_booleans" config option (@config tiny will show this). 
348
349 (continued in help boolean2)
350 & BOOLEAN2
351   If tiny_booleans is...
352   no                       FALSE: null string, 0, any negative db
353                            TRUE:  everything else
354   yes                      TRUE:  numbers other than 0
355                                   strings beginning with numbers other than 0
356                            FALSE: everything else
357  
358   Or, put another way:
359   Value                 tiny_booleans=no        tiny_booleans=yes  Gotcha
360   0                     FALSE                   FALSE
361   non-zero number       TRUE                    TRUE
362   #<non-negative>       TRUE                    FALSE               *
363   #<negative>           FALSE                   FALSE               
364
365   null string           FALSE                   FALSE
366   0<non-numbers..>      TRUE                    FALSE               *
367   <non-numbers...>      TRUE                    FALSE               *
368
369 (continued in help boolean3)
370 & BOOLEAN3
371
372   Examples (assuming tiny_booleans is "no"):     
373     not(foo) = 0 
374     not(<null string>) = 1
375     not(-66) = 0
376     not(0) = 1
377     not(#-1) = 1
378     not(#12) = 0
379   And so on...
380   (note: These rules only apply when a function expects a Boolean
381   value, not for strings that expect other values.)
382
383 See also: BOOLEAN FUNCTIONS, not(), t()
384 & CLIENTS
385   Clients are special software programs that you can use to connect to
386   MUSHes. They are usually much nicer to use than raw telnet and give you
387   many additional features, such as larger text buffers (so you can type
388   more), backscroll, history of previous commands, macros, and so on.
389
390   Here is a list of common clients and the web sites where they can be
391   found.  Please note that the below sites are subject to change.  The
392   below are listed solely for your information and possible benefit.
393   The developers of PennMUSH have nothing to do with the clients.
394
395   OPERATING
396   SYSTEM          CLIENT      WEB SITE
397   -----------------------------------------------------------------------
398   UNIX            Tinyfugue   http://tinyfuge.sourceforge.net
399   WINDOWS         MUSHClient  http://www.mushclient.com
400                   SimpleMU    http://simplemu.onlineroleplay.com
401                   MuckClient  http://www.xcalibur.co.uk/MuckClient/
402   MAC OS X        Savitar     http://www.heynow.com/Savitar/
403                   Atlantis    http://www.riverdark.net/atlantis/
404                   Unix clients will also run on OS X.
405 & CONTROL
406   Controlling an object basically means that you have the power to change
407   the object's characteristics such as flags and attributes. It may also
408   mean that you have the ability to destroy it.
409
410   Here are the conditions under which object O controls victim V:
411   1. If V is God, O must be God
412   2. If V is Wizard, O must be Wizard or God
413   3. If O is a Wizard, O controls V
414   4. If V is Royalty, O must be Royalty, Wizard or God
415   5. If O is MISTRUST, O must be V to control V
416   6. If V and O are owned by the same player:
417      6a. If V is not TRUST, O controls V
418      6b. If V is TRUST, O must be TRUST or the player must be TRUST
419   7. If V is on a zone, and isn't a player and isn't TRUST,
420      O controls V if O passes the zone-lock of the zone.
421   8. If V is owned by a SHARED player, and V isn't a player and isn't set
422      TRUST, O controls V if O passes the zone-lock of the SHARED player.
423
424   Step 7 is skipped if config(zone_control_zmp_only) is on.
425   There's also one special case: anyone can @link an unlinked exit
426   (at which point the exit is @chowned to the linker).
427
428 See also: controls(), TRUST, MISTRUST, ZONES, SHARED PLAYERS
429 & COSTS
430   These are usually:
431  
432           kill: 10 pennies (or more, up to 100 pennies)
433           page: 0 pennies
434           @dig: 10 pennies
435           @create: 10 pennies (or more)
436           @find: 100 pennies
437           @search: 100 pennies
438           @entrances: 100 pennies
439           @link: 1 penny (if you  didn't already own it,
440                           +1 to the previous owner).
441           @open: 1 penny (2 pennies if linked at  the same time)
442  
443   Type '@config/list costs' to get the costs for the MUSH you are on.
444
445 See also: MONEY, money(), score
446 & CREDITS
447   Maintainer: Raevnos [SW]
448   Developers: Javelin, Ervin Hearn III [EEH], Greg Millam [GM]
449   Past Porters: Nick Gammon [NJG] (win32), Dan Williams [DW] (MacOS),
450            Sylvia (OS/2)
451   Former developers: Rhyanna [RLM], Trivian [TN], Halatir [LdW], Talek [TAP]
452  
453   The original TinyMUSH 1.0 code was written by Lawrence Foard, and
454   was based upon James Aspnes' TinyMUD server. Since then, the code
455   has been modified by the programmers of MicroMUSE (then MicroMUSH),
456   and Joseph Traub (Moonchilde of PernMUSH).  From January 1992 to
457   January 1995, Lydia Leong (Amberyl of PernMUSH / Polgara of
458   Belgariad) maintained the code currently known as PennMUSH 1.50.
459   From January 1995 until July 2006, Alan Schwartz (Paul of DuneMUSH /
460   Javelin elsewhere) maintained this code, along with a development
461   team. From July 2006 on, Raevnos has been the maintainer.
462
463   Big thanks to the developers of TinyMUSH 2.0, 2.2 [2.2], 3.0 [3],
464   MUX2, and Rhost [Rhost] servers, as well as to the players of
465   Belgariad MUSH, DuneMUSH, and M*U*S*H, and everyone else using this
466   server!
467
468 See also: help code, help license
469 & DATABASE
470 & DBREFS
471 & DBREF NUMBER
472 & DBREF #
473   You will find the term "dbref" or "dbref number" used frequently in these
474   help files and in MUSHcode. It is an abbreviation of "database reference
475   number".
476  
477   The database is the part of MUSH that stores all the information about
478   this particular MUSH. Players, things, rooms, and exits are all objects
479   in the database. Each object in the database has a unique dbref number
480   that is set when the object is created. You can use the dbref number to
481   refer to an object that is not in your current location, and it is
482   especially important for global code.
483
484   Using DBREFs is also faster than using names, even if the object is
485   in your location. This is because whenever you try to do something with
486   an object (such as look at it, take it, etc.), the MUSH first has to
487   locate the object. Since the dbref is unique, it can immediately find
488   the object rather than checking through all the contents of your area
489   to see if one matches the name.
490
491 (continued in help dbref2)
492 & DBREF2
493  
494   If you own or control an object, you will see its dbref number listed
495   right after its name when you look at it (unless you are set MYOPIC).
496
497   Example:
498     > look me
499     Cyclonus(#3PWenAMc)
500     A very short desc.
501
502   The dbref number is indicated by the number/pound sign (#). Cyclonus's
503   dbref is #3. The letters following the dbref are the abbreviations of
504   the flags set on the object. NOTE: the abbreviation of the OPAQUE
505   flag is 'O' (o), which looks like '0' (zero) on some clients. Make sure
506   you have the right number before using it in your code!
507
508 See also: MYOPIC, OPAQUE, MUSHCODE
509 & DROP-TOS
510
511   When you use the @link command on a room, it sets another room or
512   object as the DROP-TO location. By default, any non-STICKY object that
513   someone drops in the room will automatically be transported to the
514   drop-to location, rather than staying in the room. Any STICKY object
515   droped in the room will go to its home.
516
517   If the room is set STICKY, objects dropped in the room will stay there
518   until the last player leaves/disconnects, at which point they will be
519   transported as described above.
520
521   If the room has a @lock/dropto set on it, only objects that pass the
522   lock will be transported (either immediately or when the last player
523   leaves if the room is STICKY). This can be used to prevent the dropto
524   from acting on, say, objects containing connected players.
525
526   Drop-tos are useful for keeping rooms uncluttered.
527
528 See also: @link, STICKY, LINK_OK, @lock
529 & %#
530 & %N
531 & %~
532 & %:
533 & ENACTOR
534   The enactor is the object that does something (enacts something :).
535   This is an important concept in MUSH, because the way many commands
536   work will depend on who enters the command (ie, who the enactor is).
537   Any type of object can be an enactor.
538
539   There are five %-substitutions that involve the enactor:
540     %# = the enactor's dbref
541     %N = the enactor's name, first letter capitalized
542     %n = the enactor's name, first letter as-is
543     %~ = the enactor's accented name
544     %: = the enactor's unique identifier, like objid(%#)
545
546   If, for example, you have an @osucc on an object that includes the
547   %n symbol, whenever someone picks up the object, that %n will be
548   replaced with the name of the enactor (the person who typed 'get <object>'
549   in this case).
550  
551 See also: EXECUTOR, SUBSTITUTION, DBREF
552 & EVALUATION ORDER
553   Whenever some text is entered by an object or thing, the MUSH program
554   attempts to match it against a valid game command in the following
555   order of possible commands:
556
557     Special game commands: WHO, QUIT, etc.
558     Single-token commands: ", :, ;, +, \, #
559     Exits in the room
560     @-commands and &attribute setting
561     Regular game commands: get, inventory, etc.
562     Enter aliases
563     Leave aliases
564     User-defined commands on nearby objects. All such $commands are matched
565       and executed.
566     If there are no user-defined commands nearby:
567       If the zone of the player's location is a zone master room,
568         Zone master room exits
569         Zone master room user-defined commands
570       Else
571         User-defined commands on the zone of the player's location
572
573 (continued in help evaluation2)
574 & EVALUATION2
575     If still nothing is matched:
576       User-defined commands on the player's personal zone
577     If nothing, including zone commands, has been matched:
578       Global exits
579       Global user-defined commands: all $commands in the Master Room are
580         matched. Local commands are always checked first and ALWAYS negate
581         global commands.
582
583   Because local commands overrule global commands, you can easily prevent
584   a global command from working in a specific room by setting a copy of
585   the global command in that room. Alternatively, if a global command is
586   oddly not working in a room, you should check for copies of the command
587   word in the room (using @scan).
588 & %!
589 & EXECUTOR
590   The executor of a command is the object actually carrying out the command.
591   This differs from the enactor, because the enactor is the object that sets
592   off the command. In some cases, the enactor and the executor will be the
593   same. There is a %-substitution, %!, that is replaced by the dbref # of
594   the executor of the command.
595
596   For example:
597     @emit %N is the enactor and %! is the executor!
598     > Cyclonus is the enactor and #6 is the executor!
599     @create Box
600     > Created: Object #10
601     &DO_EMIT box=$emit:@emit %N is the enactor and %! is the executor!
602     emit
603     > Cyclonus is the enactor and #10 is the executor!
604
605   In the first case, Cyclonus directly entered the command and was therefore
606   both the enactor and the executor. In the second, Cyclonus set off the
607   command on the box, so Cyclonus was still the enactor, but the box was
608   the object that was actually doing the @emit, and was thus the executor.
609
610 See also: ENACTOR, SUBSTITUTION
611 & EXITS
612   An exit is a one-way link that takes you from its source room to its
613   destination room. To open an exit from a room, you must control that room.
614   To open an exit to a room, you must either control the room or it must be
615   set LINK_OK. If an exit is set DARK is will not show up in the list of
616   obvious exits in a room.
617
618   If an exit is set TRANSPARENT, someone who looks at the exit will also
619   see the description and contents of the destination room. If an exit is
620   set CLOUDY, someone who looks at the exit will also see the contents of
621   the room beyond, but not its description. If an exits is set -both-
622   CLOUDY and TRANSPARENT, the description but not the contents will be seen.
623    
624   If you have code on an exit (In an @asuccess or the like), note that
625   [loc(exit)] is the exit's destination, and [home(exit)] is the exit's
626   starting point. If an exit @emit's something, it will be heard in the
627   source room.
628    
629 (continued in exits2)
630 & EXITS2
631   You can create an exit that sends those who go through it to their homes
632   by typing '@link <EXIT>=home'.
633
634   Starting with PennMUSH version 1.50p10, exits can have more than one
635   destination. To make an exit with a variable destination, open the exit
636   (using @open),  then type '@link <EXIT>=variable'. Finally, add an
637   attribute named 'DESTINATION' to the exit (&destination <EXIT>), which
638   will be evaluated for the dbref # of the destination room when the exit
639   is used.
640    
641   For example:
642   @open South <S>;s;south
643   @link s=variable
644   &destination s=[switch(rand(3),0,#100,1,#101,2,#102)]
645    
646   This exit would take you to either room #100, #101, or #102 depending on
647   the random number.
648
649   Anyone can create variable exits, but the destinations must be to places
650   that the exit can normally @link to.
651
652 See also: @link, @open, link_ok, CLOUDY, TRANSPARENT, @firstexit
653 & FAILURE
654   FAILURE 
655
656   A "failure" usually occurs when you try to do something that is
657   governed by an @lock and you don't pass the lock. If you try to
658   take a player or thing, and you don't pass their @lock, you will
659   set off their @fail/@ofail/@afail attributes. If you try to go
660   through an exit, and you don't pass its @lock, you will similarly
661   set off its @fail/@ofail/@afail. Other failure sets include:
662
663   Failing to enter an object (@efail, @oefail, @aefail)
664   Failing to leave an object (@lfail, @olfail, @alfail)
665   Failing to use an object (@ufail, @oufail, @aufail)
666   Other failures (&<lock>`FAILURE, &<lock>`OFAILURE, &<lock>`AFAILURE)
667     where the <lock> can be: FOLLOW_LOCK, PAGE_LOCK
668
669   Many other things can also be locked -- see @lock and locktypes for
670   more information. However, there are failure messages at this time
671   only for the above.
672
673 See also: @lock, @fail, @efail, @lfail
674 & GENDER
675 & SEX
676   Gender on a MUSH is entirely up to you. You can set yourself (or any
677   of your objects) to be male, female, neuter, or plural. If whatever
678   is in the SEX attribute is not recognizable, the MUSH will assume
679   the object is neuter. Setting a gender attribute will enable
680   pronoun substitution by the MUSH. The SEX attribute is visual to
681   anyone who wants to see it.
682
683 See also: @sex, SUBSTITUTION
684 & GLOBALS
685 & GLOBAL COMMANDS
686   A command is "global" if it can be used anywhere in the world of the
687   MUSH. The standard MUSH commands are all global, so this term is
688   usually used to refer to user-defined commands on objects in the
689   Master Room of the MUSH. Global commands very greatly from MUSH to
690   MUSH, but you can usually find MUSH-specific help on them by
691   typing "+help".
692
693 See also: MASTER ROOM, USER-DEFINED COMMANDS, EVALUATION
694 & HERE
695   The word 'here' refers to the room you are in. For example,
696   to rename the room  you're in (if you control it), you could enter
697   "@name here= <new name>".
698 & HOMES
699 & HOME
700   Every thing or player has a home, which is usually the room where
701   it was created. You can reset your home or the home of any object
702   you own with the @link command: @link <me|object>=<location>. You
703   must also control <location>, unless that location (room or thing)
704   is set ABODE or LINK_OK.
705
706   When a player types 'home', s/he is sent back to the home room. When
707   a thing with the STICKY flag set on it is dropped, it also goes to
708   its home location. Note that if the FIXED flag is set on a player,
709   he/she cannot use the 'home' command.
710
711   You can create an exit that sends players home by doing:
712         @link <exit name>=home
713   You can set the drop-to in a room to home by doing:
714         @link <room dbref or "here">=home
715
716 See also: DROP-TOS, @link, STICKY, LINK_OK, FIXED, EXITS
717 & INTERIORS
718   Here's a quick description of how to make things that can be entered:
719        
720   @create Car
721   @desc Car=A shiny red car.
722   @idesc car=You are sitting inside a luxurious sportscar.
723   @set Car=enter_ok
724   @oxleave car=climbs out of the car.   { The 'ox' messages are shown to
725   @oxenter car=climbs into the car.     { those OUTSIDE the object.
726   @oenter car=joins you inside the car. { The 'o' messages are shown to
727   @oleave car=gets out of the car.      { those INSIDE the object
728   @enter car=You get into the car.      { The plain messages are shown to
729   @leave car=You get out of the car.    { the one entering or leaving
730        
731 (continued in help interiors2)
732 & INTERIORS2
733   Now, if you want people inside to be able to hear and communicate with
734   the outside, you also need to do the following.
735    
736   @set car=audible  (lets people outside hear what's being said in the car.
737   @listen car=*     (lets people inside hear what's being said outside.
738   @prefix car=From inside the car,
739   @inprefix car=From outside,
740   @filter car=* has arrived.,* has left.,joins you inside the car.,
741     gets out of the car.
742   @infilter car=* has arrived.,* has left.,* climbs out of the car.,
743     * climbs into the car.
744
745   (The filters will keep people on the outside from seeing the 'o'
746   messages and people on the inside from seeing the 'ox' messages which
747   is a good thing.)
748
749 See also: enter, leave, @prefix, @filter, AUDIBLE, @listen
750 & LAST & LASTLOGOUT
751   LAST and LASTLOGOUT
752
753   These attributes show the last times you connected and disconnected from
754   the MUSH.
755 & LASTSITE
756 & LASTIP
757   LASTSITE and LASTIP
758
759   The LASTSITE attribute gives the name of the site you last connected from.
760   The LASTIP attribute gives the IP address you last connected from.
761   Mortals cannot set them.
762 & LINKING 
763
764   You can link to a room if you control it, or if it is set
765   LINK_OK or ABODE. Being able to link means you can set the homes of
766   objects or yourself to that  room if it is set ABODE, and can set
767   the destination of exits to that room if it is LINK_OK.
768
769 See also: LINK_OK, ABODE, @link
770 & LISTENING
771  
772   There are two basic ways to trigger action on the MUSH. The basic way
773   is to type in commands such as 'look' or '@emit'. These commands are not
774   seen or heard by other players, although the results of the commands may
775   be.
776
777   The other way is to "listen" for something said/emitted in your hearing.
778   There are two ways to listen for something in a room. The easiest way
779   is to use a combination of @listen and @ahear/@aahear/@amhear.
780
781   For example:
782     > @listen Welcome Mat=* has arrived.
783     > @ahear Welcome Mat="Welcome, %N!
784     Breaker has arrived.
785     Welcome Mat says, "Welcome, Breaker!"
786
787 (continued in help listening2)
788 & ^
789 & LISTENING2
790   If you need an object to "listen" for more than one pattern, you can
791   also use ^-patterns.  These work similar to user-defined commands,
792   using ^ instead of $. An object must be set MONITOR to have ^-patterns
793   activated.
794
795   Syntax:  &<attribute> <object> = ^<pattern>:<action list>
796
797   For example:
798   > @set Welcome Mat = MONITOR
799   > &greet Welcome Mat = ^* has arrived.:"Welcome, %N!
800   > &goodbye Welcome Mat = ^* has left.:POSE says as %N leaves, "Bye!"
801   Grimlock has arrived.
802   Welcome Mat says, "Welcome, Grimlock!"
803   Grimlock has left.
804   Welcome Mat says as Grimlock leaves, "Bye!"
805
806   Such attributes can also be @triggered as if the ^<pattern>:
807   did not exist.
808
809 (continued in help listening3)
810 & LISTENING3
811   By default, ^-patterns work like @ahear. To have them work like
812   @amhear, set the AMHEAR attribute flag on the attribute; to have
813   them work like @aahear, set the AAHEAR attribute flag on the attribute
814   (Note that the triggering object is whatever happens to be %#, so, for
815   example, when you @set an object MONITOR, you are %# with regard to the
816   "Object is now listening" message, and this message can be picked up
817   with an ^pattern.)
818
819   Additionally, unlike $-commands, @listen and ^-patterns are NOT
820   inherited via @parent, unless the LISTEN_PARENT flag is set on the
821   listener.
822
823   Listen patterns are checked after the object's normal @listen attribute.
824
825 See also: @listen, @ahear, @amhear, @aahear, MONITOR, LISTEN_PARENT,
826   USER-DEFINED COMMANDS
827
828 & LISTS
829   The word "list" is used in the help files to refer to a string that
830   is a series of smaller strings separated by one or more spaces. A list
831   can also have its elements separated by some other kind of character --
832   the separating character is called the "delimiter".
833   For example, the following are all lists:
834
835     #6 #10 #14 #12
836     Rumble|Krystal|Bobatron|Rodimus Prime   ('|' is the delimiter here)
837     foo bar whee blarg
838     -eek- .boing. yawp #5 7
839  
840   Lots of MUSHCode depends on lists and manipulating them. Normally, a list
841   is made up of similar items (so the fourth list in the example is NOT a
842   typical one).
843
844 See also: STRINGS, List Functions
845 & LOOPING
846   Looping in an object can have its good parts and its bad parts.
847   The good part is when you activate part of a program multiple times
848   to exhaustively perform an operation.  This can be done like this:
849
850     &PART1 object=<action list> ; @trigger me/PART2
851     &PART2 object= @select <test for being done>=<false>,@trigger me/PART1
852
853   Looping can be a problem when it goes on without stopping.  The @ps
854   command can be used to see if you are looping.  Beware!  A looping
855   machine that isn't @halt'd will drain your pennies while you are away
856   from the mush!
857
858 See also: @ps, HALT, COSTS, @trigger
859 & MASTER ROOM
860  
861   The Master Room enables global commands and exits. Exits in the Master
862   Room may be used from any location on the MUSH. All objects left in the
863   Master Room are checked for user-defined $commands. Those $commands are
864   considered global, meaning that they can be used anywhere on the MUSH.
865   Normally, only wizards will have access to the Master Room; if you have
866   a global command that you would like to see enabled for the MUSH, speak
867   to a wizard.
868  
869 See also: EVALUATION, GLOBAL COMMANDS
870 & ME
871   The word 'me' refers to yourself. Some things to do when
872   starting out:
873   1) give  yourself a description:      @desc me=<description>
874   2) check your desc.:                  look me
875   3) lock yourself:                     @lock me==me
876   4) set your gender:                   @sex me=<male|female|neuter|plural>
877
878 See also: help newbie, help @lock, help @describe, help @sex
879 & MONEY
880   The MUSH has a built-in money system, which gives a starting amount
881   of money to new players and hands out a daily allowance thereafter.
882   MUSH money (the default name is "pennies", but this may be different
883   depending on the particular MUSH) is spent on some MUSH commands
884   that are computationally expensive or alter the database. In
885   addition, every time you "queue" a command, it costs you a certain
886   amount of money -- this prevents looping from getting out of control,
887   since when all your money is spent, you can't queue any more commands.
888
889   The money system can also be used on player-created objects by giving
890   them @cost/@payment/@opayment/@apayment attributes. When someone then
891   pays the object by giving it the right number of pennies, the attributes
892   are triggered.
893
894 See also: COSTS, give, @cost, @pay, @opay, @apay
895 & MUSHCODE
896 & SOFTCODE
897
898   MUSHcode is the programming language available within the MUSH itself
899   with which you can create user-defined commands and macros.  It is
900   sometimes called "softcode" to distinguish it from "hardcode", which is
901   the language that the source code for the MUSH server is written
902   in. (Incidentally, hardcode is written in the C programming language.)
903  
904   At its most basic, writing MUSHcode is just stringing together a series
905   of commands that you would otherwise just type in one at a time.  You
906   can store MUSHcode in attributes on any type of object you own or control
907   (including yourself!).  The series of commands can be triggered by using
908   a user-defined command or by using @trigger.
909  
910 (continued in help mushcode2)
911 & MUSHCODE2
912
913   If you would like to learn more about mushcoding and how to create macros
914   for yourself, the following help files may be useful.  However, the best
915   way to learn is by obtaining a copy of Amberyl's MUSH manual and following
916   the examples described there.  The manual is available by anonymous FTP
917   from: ftp.pennmush.org in the directory /pub/PennMUSH/Manuals
918
919   Related Help Topics (in no particular order)
920   -------------------
921   ATTRIBUTES    SUBSTITUTION    NON-STANDARD ATTRIBUTES
922   ENACTOR       EXECUTOR        USER-DEFINED COMMANDS
923   DBREFS        EVALUATION      TYPES OF OBJECTS
924   WILDCARDS     STRINGS         LISTS           
925   ACTION LISTS
926
927 & NON-STANDARD ATTRIBUTES
928   While there are many standard attributes in MUSH, objects can also have
929   an unlimited number of attributes, with any name you wish to use. In the
930   past, you were limited to attributes named VA-VZ, WA-WZ, XA-XZ; these
931   are still available as standard attributes. However, it is strongly
932   recommended that you use non-standard attributes and meaningful names
933   in order to make maintaining your MUSHCode easier.
934
935   To set a non-standard attribute, you can use these formats:
936       &<attribute name> <obj> = <value>  OR
937       @_<attribute_name> <obj> = <value> OR
938       @set <obj> = <attribute_name>:<value>
939
940   You can get the value of attributes using the functions v(), get(), and
941   xget(). You can evaluate attributes using u(), eval(), and get_eval().
942   All attributes can be used in attribute locks and can be 'owned'
943   independent of object ownership.
944  
945 See also: ATTRIBUTES, ATTRIB-OWNERSHIP, Attribute Functions, ATTRIBUTE TREES
946 & PARENT
947 & PARENTS
948 & OBJECT PARENTS
949  
950   Objects may have "parent" objects, from which they can inherit attributes.
951   Once an object is given a parent, it may use the attributes on the parent
952   just as if the attributes were on the object itself, including checking for
953   $commands. Use the @parent command to change the parent of an object.
954
955   Objects may have multiple levels of parents - thus, if #100 is the
956   parent of #101, which is the parent of #102, object #102 checks itself,
957   #101, and #100 for attributes. Attributes are checked on the object
958   itself first, followed by its parent, followed by that parent's parent,
959   and so forth. There is a (configurable) maximum length of the parent
960   chain for an object; the default is 10.
961
962   After the parent chain is exhausted, the type-specific ancestor is
963   also checked in similar fashion.  See 'help ANCESTORS' for more about
964   ancestors.
965
966 (continued in help parents2)
967 & PARENTS2
968  
969   Note that the only properties inherited are attributes. In particular,
970   flags and exits are NOT inherited from the parent object. Also, commands
971   which walk the attribute list (such as "examine", the LATTR() function,
972   the HASATTR() function, @set, and @edit) only affect attributes that are
973   on the object itself.
974  
975   There are some limitations to the use of @parent. The most important is
976   that ^-pattern checking is not done on the parent of an object, unless the
977   object is set LISTEN_PARENT. For the purposes of automated game checks,
978   the following attributes are not inherited: CHARGES, EALIAS, LALIAS, LAST,
979   LASTSITE, LISTEN, QUEUE, RQUOTA, SEMAPHORE, and STARTUP.
980    
981   The attributes inherited from the parent are treated just like its
982   own attributes by the child. Thus, when a $-command or @trigger is
983   executed, "me", for example, refers to the child, not the parent,
984   and the $-command's associated actions are performed by the child.
985
986 (continued in help parents3)
987 & PARENTS3
988   Attributes with $-commands _are_ inherited from the parent and
989   previous generations. Conflicts are resolved not by the $-command
990   name, but by the attribute name. If two attributes are in "conflict",
991   the child's attribute is used.
992
993   For example:
994
995   > &TEST #10=$test:@emit I'm the parent
996   > &TEST #11=$check:@emit I'm the child
997   > @parent #11=#10
998   > test
999   (nothing happens)
1000   > check
1001   I'm the child
1002
1003 (continued in help parents4)
1004 & PARENTS4
1005   If a parent has the same $-command name in a different attribute, however,
1006   BOTH the parent and child commands will execute:
1007
1008 (continued from previous example)
1009   > &CHECK #10=$check:@emit No, I'm the parent!
1010
1011   > check
1012   I'm the child
1013   No, I'm the parent!
1014  
1015   @parent is most useful when several objects use common attributes.
1016   It is slightly faster to have $commands on the child object which
1017   in turn @trigger or otherwise retrieve attributes inherited from
1018   the parent object, rather than having the $commands checked on the
1019   parent object.
1020
1021 (continued in help parents5)
1022 & PARENTS5
1023  
1024   Parent-object $-command checking is at its most efficient when there
1025   are few or no attributes on the child. Also, each additional level
1026   of parents further reduces efficiency.  Finally, note that ancestors
1027   are *not* checked for $-commands.
1028  
1029   If you are "mass-marketing" your objects, you can create blank copies,
1030   and @parent those copies to a template object. You can then customize
1031   necessary attributes on the copy. When a buyer @chowns his copy, the
1032   parent does not change, so unless you're putting data into the parent
1033   that you want to make impossible to read, it's safe to allow the
1034   purchasers of your object to @chown their copy.
1035
1036 See also: @parent, $-COMMANDS, ATTRIBUTES, ANCESTORS
1037 & POWERS LIST
1038   Powers can be granted only by wizards, using the @power command.
1039   Powers cannot be granted to guest characters or players who are set
1040   UNREGISTERED. Powers normally give the player the ability to use a
1041   limited set of wizard/admin powers.
1042
1043   announce              Can use @wall command. 
1044   boot                  Can use @boot command.
1045   builder               Can use Builder commands.
1046   chat_privs            Can use Admin channels.
1047   debit                 Can use give with a negative amount.
1048   functions             Can use @function command.
1049   guest                 Guest. Restricted command set.
1050   halt                  Can @halt others' objects and do @allhalt.
1051   hide                  Can hide on the WHO list.
1052   hook                  Can use the @hook command.
1053   idle                  No inactivity timeout.
1054   link_anywhere         Can @link an exit to anyplace.
1055   login                 Not subject to login restrictions.
1056   long_fingers          Can do things remotely, like "get".
1057   many_attribs          Can exceed max_attrs_per_obj.
1058
1059 (continued in help powers2)
1060 & POWERS2
1061 & POWERS LIST2
1062   no_pay                Doesn't need money for anything
1063   no_quota              Has an unlimited quota
1064   open_anywhere         Can @open a link from any room.
1065   pemit_all             Can @pemit to HAVEN/ulocked players.
1066   player_create         Can use @pcreate command.
1067   poll                  Can use @poll command.
1068   pueblo_send           Can use xch_cmd and send pueblo tags
1069   queue                 Has queue limit equal to the size of the database.
1070   quota                 Can use @quota commands on other players.
1071   search                Can do @search, @stats, and @entrances on anything.
1072   see_all               Sees everything as if it were Visual.
1073   see_queue             Can do @ps on anyone, and @ps/all.
1074   sql_ok                Can perform SQL queries
1075   tport_anything        Can @teleport anything.
1076   tport_anywhere        Can @teleport to anywhere.
1077   unkillable            Can not be killed
1078   can_nspemit           Can use @nspemit and nspemit()
1079
1080 See also: help @power, and especially @power/list
1081 & PUPPETS
1082   A thing is turned into a puppet by setting the PUPPET flag on it.
1083   A puppet object is an extension of its owner and relays everything
1084   it sees and hears to its owner, except if it is in the same room as
1085   the owner (a puppet with the VERBOSE flag will relay even if it's in
1086   the same room). Things relayed by the puppet will be prefixed by the
1087   name of the puppet.
1088
1089   Puppets are useful for keeping track of what is going on in two
1090   rooms at once, as extensions of a player (such as a pet, for example),
1091   or for testing code.
1092
1093 &n