PennMUSH Community

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

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

Merge devel into trunk for p6 release

Line 
1 & COMMANDS
2 Help is available for the following MUSH commands:
3  
4   ahelp          anews          brief          DOING          drop
5   examine        enter          events         follow         get           
6   give           go             index          kill           leave         
7   LOGOUT         look           move           news           page           
8   pose           QUIT           read           rules          say
9   score          slay           take           teach          think         
10   unfollow       use            whisper        WHO            with
11   "              :              ;              +              ]
12  
13   In addition to these, there are several types of '@' commands. @-commands
14   are usually commands which have permanent effects on the MUSH (such as
15   creating a new object). Here are the help topics on @-commands:
16  
17   @-ATTRIBUTES   @-BUILDING     @-GENERAL      @-WIZARD
18  
19   Commands that can only be used by connected players are listed in
20   HELP SOCKET COMMANDS.
21 & @-ATTRIBUTES
22 These '@' commands set standard message/action sets on objects. Each comes
23 in 3 versions: @<whatever>, @o<whatever>, and @a<whatever>. Only the
24 @<whatever> version is listed below, but help is available for each:
25  
26   @death         @describe      @drop          @efail         @enter
27   @failure       @follow        @give          @idescribe     @leave
28   @lfail         @move          @payment       @receive       @success
29   @tport         @ufail         @unfollow      @use           @zenter       
30   @zleave
31
32 These '@' command set other standard attributes on objects that don't
33 follow the pattern above:
34
35   @aahear        @aclone        @aconnect      @adisconnect   @amhear
36   @away          @charges       @cost          @conformat     @descformat
37   @ealias        @exitformat    @filter        @forwardlist   @haven         
38   @idescformat   @idle          @infilter      @inprefix      @lalias       
39   @listen        @nameformat    @oxenter       @oxleave       @oxmove       
40   @oxtport       @prefix        @runout        @sex           @startup       
41
42 See also: ATTRIBUTES, NON-STANDARD ATTRIBUTES
43 & @-BUILDING
44 These '@' commands are building-related (they create or modify objects):
45  
46   @atrlock       @atrchown      @chown         @chzone        @clone         
47   @cpattr        @create        @destroy       @dig           @elock         
48   @eunlock       @firstexit     @link          @lock          @mvattr       
49   @name          @nuke          @open          @parent        @recycle       
50   @set           @undestroy     @ulock         @unlink        @unlock       
51   @uunlock       @wipe
52  
53 & @-GENERAL
54 These '@' commands are general utility and programming commands:
55
56   @@             @alias         @break         @channel       @chat
57   @cemit         @command       @config        @decompile     @doing
58   @dolist        @drain         @edit          @emit          @entrances
59   @find          @force         @function      @gedit         @grep
60   @halt          @lemit         @listmotd      @mail          @map
61   @notify        @nsemit        @nslemit       @nsoemit       @nspemit
62   @nsprompt      @nsremit       @nszemit       @oemit         @password     
63   @pemit         @prompt        @ps            @remit         @restart       
64   @scan          @search        @select        @stats         @sweep         
65   @switch        @teleport      @trigger       @verb          @version       
66   @wait          @whereis       @zemit
67
68 & @-WIZARD
69 These '@' commands are only usable by wizards or privileged players:
70  
71   @allhalt       @allquota      @boot          @chownall      @chzoneall
72   @comment       @dbck          @disable       @dump          @enable
73   @flag          @hide          @hook          @kick          @log           
74   @motd          @newpassword   @pcreate       @poll          @poor         
75   @power         @purge         @quota         @readcache     @rejectmotd   
76   @shutdown      @sitelock      @sql           @squota        @uptime       
77   @wall          @wizmotd       @wizwall       cd             ch             
78   cv
79  
80 & ]
81   The "]" command-prefix instructs the MUSH that the rest of the command
82   input that follows should not be evaluated. Here's an example:
83
84   > say [add(1,1)]
85   You say, "2"
86
87   > say \[add(1,1)\]
88   You say, "[add(1,1)]"
89
90   > ]say [add(1,1)]
91   You say, "[add(1,1)]"
92
93   > ]"[add(1,1)]
94   You say, "[add(1,1)]"
95  
96   This can be used to pass unevaluated MUSHcode to softcoded commands
97   without having to escape every special character, or to help objects
98   set attributes to contain unevaluated code.
99
100 & @@
101  
102   The "@@" command is a special kind of command; it signals the start
103   of a comment. The comment lasts until a semi-colon is found, just
104   like other MUSH programming statements terminate with a semi-colon.
105   It cannot be put into the middle of a statement, like
106   @va me = $testing:@emit Test. @@ Just a test @@; @vb me=Testing.
107   That will result in the object emitting "Test. @@ Just a test. @@"
108   The correct usage is to make the comment a statement by itself:
109   @va me = $testing:@emit Test.; @@ Just a test @@; @vb me=Testing.
110  
111   It is not necessary to use a closing '@@', but doing so makes the
112   comment stand out much more clearly. A space between the first
113   '@@' and the word following it is necessary.
114 & @aahear
115   @aahear <object> = <action list>
116
117   An aahear on an object is activated whenever the object's listen pattern
118   is matched by anything done/said by either anything else in the room OR
119   the object itself. In contrast, an ahear on an object cannot be activated
120   by anything the object itself does.
121
122 See also: @listen, @ahear, @amhear, LISTENING
123 & @aclone
124   @aclone <object> = <action list>
125
126   Sets the actions to be taken whenever <object> is @cloned. This command
127   can be useful for notifying the owner of a vending machine or parent
128   object when someone uses the machine.
129
130   Please note that there is no @oclone, and that @clone is always a
131   command, not an attribute.
132
133 See also: @clone, @create, ACTION LISTS
134 & @aconnect
135   @aconnect <object> = <action list>
136
137   Sets the actions to be taken by a player right after connecting to
138   the game.
139
140   Example: @aconnect me = :stretches luxuriously, as if waking from a nap.
141
142   Note that long and spammy @aconnect messages, whether in your room or
143   on a channel, are frequently found annoying by other players.
144
145   The player's location, and zone object/objects in the zone parent
146   room of the location, as well as objects in the master room, are
147   also checked for an @aconnect. If one is found, it will be executed
148   when a player connects in that location or zone (or, in the case of
149   the master room, anywhere). This is only done if the room_connects
150   config option is enabled.
151
152   One descriptor variable is passed to @aconnect:
153   %1 = number of player connections (1 if this is an initial connect)
154
155 See also: @adisconnect, ACTION LISTS
156 & @adeath
157   @adeath <object> = <action list>
158
159   Sets the actions to be taken after <object> is killed.
160  
161 See also: @odeath, @death, kill, BEING KILLED, ACTION LISTS
162 & @adescribe
163   @adescribe <object> = <action list>
164  
165   Sets the actions to be taken when  <object> is looked at.
166   A common use of this command is:
167
168     @adesc me=think %N just looked at you.
169
170   which will inform you whenever someone looks at you. %N will be
171   replaced by the name of the person who looked. While it is possible to
172   set a message to be broadcasted to everyone in the area when someone
173   looks at you, this is strongly discouraged, as many people find it
174   annoying.
175
176 See also: @describe, @aidescribe, look, SUBSTITUTION, ACTION LISTS
177 & @adestroy
178   @adestroy <object> = <action list>
179
180   Sets the actions to be taken by the object when it is destroyed
181   (via @rec or @nuke). This can only be set by a Wizard.
182   If @adestroy doesn't work, try &adestroy. :)
183 & @adisconnect
184   @adisconnect <object> = <action list>
185
186   Sets the actions to be taken by a player right after disconnecting
187   from the game.
188
189   Example: @adisconnect me = home
190
191   The player's location, and zone object/objects in the zone parent
192   room of the location, as well as objects in the master room, are
193   checked for an @adisconnect. If one is found, it will be executed
194   when a player disconnects in that location or zone (or, in the case of
195   the master room, anywhere). This is only done if the room_connects
196   config option is enabled.
197
198   Several descriptor variables are passed to @adisconnect:
199   %1 = number of remaining connections (0 if a full disconnect)
200   %2 = bytes received by the disconnecting descriptor
201   %3 = bytes sent by the disconnecting descriptor
202   %4 = commands issued by the disconnecting descriptor
203
204 See also: @aconnect, ACTION LISTS, recv(), sent(), cmds()
205 & @adrop
206   @adrop <object> = <action list>
207
208   Sets the actions to be taken when <object> is dropped.
209   If <object> is an exit, sets an action to be done after a player
210   has passed through the exit.
211
212 See also: @odrop, @drop, drop, ACTION LISTS
213 & @aefail
214   @aefail <object> = <action list>
215
216   Sets the actions to be taken by the object when someone fails to enter
217   it.
218
219 See also: enter, FAILURE, ACTION LISTS
220 & @aenter
221   @aenter <object> = <action list>
222
223   Sets the actions taken by the object whenever someone enters it.
224
225 See also: @enter, @oenter, enter, ACTION LISTS
226 & @aufail
227 & @oufail
228 & @ufail
229   @ufail <object> = <message>
230   @oufail <object> = <message>
231   @aufail <object> = <action>
232
233   Sets message shown to a player who fails to use an object via
234   the 'use' command (@ufail), message shown to others in the room
235   (@oufail), and action for the object to take (@aufail).
236
237   Note that these attributes are @ufail, NOT @ufailure, for
238   TinyMUSH compatibility.
239
240 & @afailure
241   @afailure <object> = <action list>
242
243   Sets the actions to be taken on failure to pass the @lock on an
244   object. For players and things, this means failure to pick them up
245   with get/take. For exits, this means failure to go through an exit.
246  
247   May be abbreviated @afail.
248
249 See also: @fail, @ofail, get, EXITS, @lock, ACTION LISTS
250 & @afollow
251   @afollow <object> = <action list>
252
253   Sets the actions to be taken after someone or something begins
254   following the object.
255
256 See also: follow, unfollow, followers(), @follow, @ofollow, ACTION LISTS
257 & @aunfollow
258   @aunfollow <object> = <action list>
259
260   Sets the actions to be taken after someone or something stops
261   following the object.
262
263 See also: follow, unfollow, followers(), @unfollow, @ounfollow, ACTION LISTS
264 & @ahear
265   @ahear <object> = <actions>
266
267   Sets the actions to be taken after the object's @listen is matched.
268   Note that @ahear ignores any messages that the object itself creates,
269   so it can only be triggered by other things. If you want the object to
270   be able to trigger itself, try using @amhear or @aahear.
271  
272 See also: @aahear, @amhear, @listen, ACTION LISTS, LISTENING
273 & @aleave
274   @aleave <object> = <action list>
275
276   Sets the actions to be taken whenever someone leaves the object.
277
278 See also: leave, @leave, @oleave, ACTION LISTS
279 & @alfail
280   @alfail <object> = <action list>
281
282   Sets the actions to be taken whenever someone tries to leave the
283   object and fails (because the object is set NO_LEAVE or because
284   the person fails the @lock/leave on the object).
285
286 See also: leave, @lfail, @olfail, ACTION LISTS
287 & @alias
288   @alias <player>=<name>;<alias>[;<alias2>[;<alias3>[...]]]
289  
290   @alias is a special attribute that lists a player's names; players
291   can be paged by their aliases, matched with *<alias>, and all other game
292   functions which look up player names will also accept an alias.
293   The attribute is visible to all players.
294
295   A list of aliases, separated by semicolons, may be provided.
296   Players should include their usual @name in the alias list, because
297   the @name command allows setting name to any alias in the list.
298   The number of aliases allowed in the list may be limited by
299   the game's administrators through the 'max_aliases' @config parameter.
300
301   If the page_aliases config directive is on, the first alias in the
302   list is returned along with the player's name.
303  
304   Each alias cannot be longer than the limit allowed for player names,
305   cannot contain spaces, and must be unique -- no other player may
306   have the same alias or name as any other player's alias or name.
307
308   @alias has no effect on non-players.
309
310 See also: @name, alias(), fullalias()
311 & @allhalt
312   @allhalt
313
314   This command halts all objects in the game in an effort to free up
315   the queue. Wizard-only command.
316  
317   This command is equivalent to "@halt/all".
318
319 See also: QUEUE, @ps
320 & @allquota
321   @allquota[/quiet] [<limit>]
322
323   This is a God level command that is only available if the quota
324   system is being used.  It displays the current max and owned objects
325   of every player (unless the /quiet switch is used) and resets their
326   quota left to the new limit minus the current number owned if a limit
327   is given.
328 & @amhear
329   @amhear <object> = <action list>
330
331   Sets the actions to be taken whenever the @listen on the object is
332   matched by something that the object itself does. It will not react
333   if anyone else in the area does anything that matches the @listen
334   pattern. If you want other objects to be able to set off the action
335   list, try using @ahear or @aahear.
336
337 See also: @listen, @ahear, @aahear, LISTENING, ACTION LISTS
338 & @amove
339   @amove <object> = <action list>
340
341   This is the action to be taken whenever an object moves.
342
343 See also: @move, @omove, @oxmove, ACTION LISTS, go
344 & @apayment
345   @apayment <object> = <action list>
346
347   Sets the actions to be taken after a player gives an object some
348   amount of pennies. The amount paid is passed in as %0.
349
350 See also: give, @pay, @opay, @cost, MONEY, ACTION LISTS
351 & @atport
352   @atport <object>=<action list>
353
354   Sets the list of actions that <object> will perform when it is
355   teleported. These actions are done after <object> has arrived
356   in its new location.
357
358   %0 is the object causing the teleport, and %1 is the old location
359   of the teleported object.
360
361 See also: @tel, ACTION LISTS, @tport, @otport, @oxtport
362 & @atrchown
363   @atrchown <object>/<attribute> = <new_owner>.
364   Like @chown except it changes the control of an attribute from one person
365   to another. You may only @atrchown attributes that you can normally set,
366   and unless you're a wizard, you can only @atrchown attributes to yourself.
367
368 See also: @atrlock, ATTRIBUTES, NON-STANDARD ATTRIBUTES
369 & @atrlock
370   @atrlock <object>/<attribute> = [on|off].
371
372   If 'on' is specified, it 'locks' the specified attribute on the object.
373   If the attribute is owned by someone other than you, you will gain
374   ownership of it.  If an attribute is unlocked, then anyone who controls
375   the object may change it.  If it is locked, only wizards and the attribute's
376   owner (Assuming the owner controls the object) can change it. Wizards may
377   lock/unlock anyones attributes.  If you specify 'off' it will unlock a
378   locked attribute. Specifying neither will return the current value of the
379   lock. You can only lock or unlock attributes you can normally set.
380
381 See also: @atrchown, ATTRIBUTES, NON-STANDARD ATTRIBUTES
382 & @asuccess
383   @asuccess <object> = <action list>
384
385   Sets the actions to be taken when the @lock of an object is passed.
386   For things/players, this means picking them up. For exits, this means
387   going through them.
388
389 See also: @success, @osuccess, get, @lock, EXITS, ACTION LISTS
390 & @attribute
391   @attribute <attrib>
392   @attribute/access[/retroactive] <attrib> = <flag list or "none">
393   @attribute/delete <attrib>
394   @attribute/rename <attrib> = <new name>
395
396   @attribute is a wizard-only command which modify's the MUSH's
397   table of standard attributes (use @list/attribs to list them).
398   A standard attribute is one that can be set with @<attrib> instead
399   of &<attrib>, and which, when set, has a predefined set of
400   initial permissions.
401
402   *** Unlike TinyMUSH, changes to the PennMUSH attribute table
403   *** are not saved across shutdowns. Use these commands from
404   *** God's @startup to insure they are run at each startup.
405
406   Used without switches, @attribute shows info about a standard attrib.
407
408   @attribute/access adds a new standard attribute into the table,
409   associating it with the given space-separated list of full flag names.
410   See 'help attribute flags' for possible flags. A flag list of "none" removes
411   all flag associations.
412   If the /retroactive switch is added, the flags are assigned to every copy
413   of the attribute that already exists in the database.
414
415   @attribute/delete removes a standard attribute from the table.
416   @attribute/rename renames a standard attribute.
417 & @ause
418   @ause <object> = <action list>
419
420   Sets the actions to be taken when an object is successfully "used".
421  
422 See also: use, @use, ACTION LISTS, @charges, @runout
423 & @away
424   @away <player> = <message>
425
426   This message is sent to a player who tries to page you when you are
427   not connected, if it evaluates to something non-null.
428
429   Example: @away me=I'm not here, please send me @mail instead.
430
431 & @boot
432   @boot[/silent] <player>
433   @boot/port[/silent] <descriptor number>
434   @boot/me
435
436   Disconnects the player from the game, with a standard message unless
437   the /silent switch is given.
438
439   The /port switch takes a descriptor number instead (the "Port" number
440   in WHO for wizards).
441
442   The /me switch boots any single descriptor for the same player which
443   has been idle for at least 1 minute. Players can use this command
444   to terminate hung connections.
445
446   Only admin and those with the "boot" power can @boot other players.
447
448 & @BREAK
449 & @ASSERT
450   @break  <boolean>[=<command list>]
451   @assert <boolean>[=<command list>]
452
453   @break stops the execution of further commands in the current action
454   list if <boolean> is a true value. It doesn't affect new queue entries
455   made by previous commands in the action list. Very useful to people who
456   don't like @switch. If <command> is given, it is executed instead of
457   the rest of the commands in the current queue.
458
459   @assert does the inverse: it stops execution if <boolean> evaluates to false.
460
461   Examples:
462   > @va obj=$testme *:@pemit %#=You try a test;
463                       @break [lt(%0,10)] = @pemit %#=But you're too low!;
464               @pemit %#=And you succeed!
465   > testme 0
466   You try a test
467   But you're too low!
468   > testme 10
469   You try a test
470   And you succeed!
471
472   > @force me={@switch 1=1, think Third; think First; @break 1; think Second}
473   First
474   Third
475   (The @switch is run, which queues 'think Third', think First is
476    run, displaying 'First', command execution is broken (so we never
477    think Second), and then the queued 'think Third' is run, displaying
478    Third. If you figured that out, you have a very good understanding
479    of the PennMUSH queue. :)
480
481 See also: ACTION LISTS, QUEUE, BOOLEAN VALUES
482 & @charges
483   @charges <object> = <integer>
484
485   Allows you to limit the number of times an object can be "used".
486   The "charges" attribute will be decreased by one each time the
487   object's @ause is triggered, and once it reaches zero, the object
488   cannot be used anymore.
489
490 See also: use, @runout, @ause
491 & @chown
492   @chown[/preserve] <object>=<player>
493
494   Changes the ownership of <object> to <player>. You can chown things,
495   rooms, or exits. To chown a thing, you have to be carrying it.
496   If you do not own an object, you can only chown it if it is CHOWN_OK.
497   If you're not a Wizard, you can only @chown objects to yourself or
498   to a Zone Master whose zone-lock you pass.
499
500   Normally, @chown'ing an object clears privileged flags and powers,
501   and sets the object halt.  Wizards may use @chown/preserve to chown
502   an object, preserving these privileges and not setting the object
503   halt. Doing this to an active object with queued commands is not
504   recommended, and may have strange and insecure effects.
505
506   Examples:
507     (for a room)    @chown here=me
508     (for an object) @chown box=Soundwave
509  
510   Players can't be @chowned; they always own themselves.
511
512 See also: CHOWN_OK, Zone Masters
513 & @chownall
514   @chownall[/preserve] <player> [= <target_player>]
515
516   Transfers ownership of all the objects that the player owns to
517   <target_player>. If the target player is not included, then all
518   the objects are chowned to the person executing the command.
519   This is a wizard-only command. The /preserve switch keeps privileged
520   flags and powers instead of clearing them, and doesn't halt them.
521
522 See also: @chown
523 & @chzone
524   @chzone <object>=<zone master>
525   @chzone <object>=none
526
527   The first form of this command changes the ZONE of <object> to
528   <zone master>. This puts the object on that zone and may (if the
529   zone_control_zmp_only option is off) allow anyone who passes the
530   zone-lock of the zone master to make changes to the object. Any
531   kind of object can be @chzoned, and any kind of object can be used
532   as the zone master.
533
534   The second form of this command resets the zone of <object> to *NOTHING*.
535   Anyone can reset the zone of an object s/he owns.
536
537   If a player is @chzoned, anything s/he makes afterwards will start out
538   with that Zone, but none of the objects that s/he presently owns will
539   have their Zone changed. Players can @chzone themselves to a master if
540   they own it. Otherwise, only wizards can @chzone players.
541
542 (continued in help @chzone2)
543 & @chzone2
544
545   To see the Zone of an object, you can use either 'brief' or 'examine'
546   to examine it. The Zone is listed on the same line as the Owner of
547   the object.
548
549   Players can @chzone objects they own if they own the zone master or
550   if they pass its @lock/chzone.  Wizards can @chzone objects to any
551   zone master as long as the object has a zone-lock.
552
553   Whenever an object besides a player is @chzoned to a zone master, the
554   WIZARD, ROYALTY, and TRUST flags will be reset, as will all @power's
555   (for security purposes). For similar reasons, it is strongly recommended
556   that you do not @chzone admin- or wizard-owned objects to any zone
557   that less privileged players have access to.
558
559 See also: ZONES, @chzoneall
560 & @chzoneall
561   @chzoneall <player>=<zone master>
562
563   Changes the zone of all objects owned by <player> to <zone master>.
564   If <zone object> is "none", the zone is reset to NOTHING. Only wizards
565   may use this command.
566  
567 See also: @chzone, ZONES
568 & @clone
569   @clone <thing, room, or exit>[=<new name>]
570   @clone/preserve <thing, room, or exit>[=<new name>]
571
572   For things, creates an exact duplicate of it and puts it in the
573   current room. For exits, it creates an exact duplicate of that
574   exit, except the clone's source is the current room rather than
575   whatever the original exit's source was. For rooms, creates an
576   exact duplicate of the room, without contents or exits. The name
577   of the duplicate object can be provided; it defaults to the same
578   as the name of the original object.
579
580   The thing to be cloned must be controlled by the @cloning player.
581   The clone will be owned by the @cloning player.
582
583   If creation times are enabled, a clone will have a different creation
584   time than the object it was cloned from, but will have the same
585   modification time, to make tracking revisions of code easier.
586
587   A wizard may use @clone/preserve, which has the effect of preserving
588   all the bits, powers, and warnings of the original object.
589
590   To clone a room and all its exits, use code like:
591     @tel [setq(0,%l)][clone(here)]; @dol lexits(%q0)=@clone ##
592
593 See also: @create
594 & @command
595   @command <command>
596   @command/<switch> <command>
597   @command/alias <command>=<new command name>
598
599   @command provides information about and controls the availability
600   of other commands.
601
602   With no switches, @command shows all sorts of interesting information
603   about how a command is parsed.
604
605   Switches include:
606   /disable   : Disable the <command>
607   /off       : Synonym for /disable
608   /enable    : Enable the <command>
609   /on        : Synonym for /enable
610   /alias     : Creates an alias for a command.
611   /quiet     : Don't make noisy output when doing one of the above
612   /add       : Creates a useless command. @hook/override it.
613   /delete    : Deletes a command added by @command/add, or aliases.
614
615   See HELP RESTRICT for more.
616 (continued in help @command2) 
617 & @command2
618   @command/add and @command/delete are powerful tools in that they let
619   you write $-commands which may or may not parse their arguments, and
620   have the precedence of a built-in command, being checked before
621   $-commands on objects. Only God may use these switches.
622
623   Additional switches are used in @command that only apply when used
624   with @command/add. These switches are:
625
626   /noparse   : The command does not evaluate arguments passed to it.
627   /eqsplit   : The parser parses leftside and rightside around =
628   /lsargs    : Comma-separated arguments on the left side are parsed.
629   /rsargs    : In conjunction with eqsplit, the right-side arguments,
630                comma-separated, are parsed individually and passed
631                to the $-command in @hook/override.
632
633   Any command added without the /noparse switch is provided with a
634   /noeval switch itself, so if you @command/add foo, then foo's arguments
635   are parsed by default, but you can call foo/noeval. Note: the $-command
636   needs to make allowances for the /noeval switch in it's matching.
637
638   Commands added with @command/add, like other standard commands,
639   are never case-sensitive (regardless of CASE flag on the attribute).
640
641 (examples in help @command3)
642 & @command3
643   Examples:
644
645   > @create Dining Machine
646   > &eat dining=$eat *:@remit %L=%N takes a bite of %0.
647   > @command/add/noeval eat
648   > @hook/override eat=dining machine,eat
649   > eat meat loaf
650   Walker takes a bite of meat loaf.
651   > eat randword(apple tomato pear)
652   Walker takes a bite of randword(apple tomato pear)
653
654   > &drink dining=$^drink(/noeval)? (.*)$:@remit %L=%N drinks %1.
655   > @set dining/drink=regexp
656   > @command/add drink
657   > @hook/override drink=dining machine,drink
658   > drink reverse(tea)
659   Walker drinks aet.
660   > drink/noeval reverse(tea)
661   Walker drinks reverse(tea).
662
663 & @comment
664   @comment <object> = <comment>
665
666   This is a wizard-only command which sets a COMMENT attribute on
667   <object>. The comment can only be seen by other wizards and royalty.
668 & @config
669   @config/functions
670   @config/commands
671   @config/attribs
672   @config/flags
673   @config/list[/lowercase] [<option|option-type>]
674   @config/set option=value
675  
676   This command lists the MUSH configuration parameters, indicating what
677   special things are enabled, and the cost of certain commands.
678   Switches include:
679
680   /functions  --   Lists all functions.
681   /commands   --   Lists all commands.
682   /flags      --   Lists all flags.
683   /attribs    --   Lists all standard attributes.
684   /list       --   Lists the value of a particular <option> or <option-type>
685                    if given one; lists the option-types if not.
686   /set        --   Wizard only, changes parameters from the mush. See
687                    help @config parameters for available ones.
688 & @conformat
689   @conformat <object> [=<format>]
690
691   Replaces the usual "Contents:" or "Carrying:" format when an object
692   is looked at, by a player-specified contents format. This is evaluated
693   as if it were a description or other similar message on the room.
694   The objects that the looker would normally be able to see is passed
695   as a dbref list in %0; all contents can be acquired through 'lcon(me)'.
696   A |-delimited list of all the unparsed object names is passed
697   in %1 (so iter(%1,itext(0),|,%r) produces the standard list)
698  
699   One could change the format to 'Contents: Object1 Object2 Object3'
700   through '@conformat here = Contents: [iter(%0,name(##))]',
701   for example. More complex things are, obviously, possible.
702  
703 See also: @exitformat, @nameformat, @descformat
704 & @invformat
705   @invformat <object> [=<format>]
706
707   Replaces the usual "You are carrying:" format when an object uses the
708   "inventory" command, by a player-specified format. This is evaluated
709   as if it were a description or other similar message on the object.
710   The objects carried are passed as a dbref list in %0.
711   A |-delimited list of all the unparsed object names is passed
712   in %1 (so iter(%1,itext(0),|,%r) produces the standard list)
713
714   One could change the format to 'You've got: Object1 Object2 Object3'
715   through '@invformat me = You've got: [iter(%0,name(##))]',
716   for example. More complex things are, obviously, possible.
717  
718 See also: inventory
719 & @descformat
720   @descformat <object> [=<text>]
721
722   Replaces the usual description of the object when it is looked at
723   by player-specified text. The evaluated DESCRIBE attribute is
724   passed as %0; the unevaluated DESCRIBE can be acquired through
725   v(DESCRIBE).
726
727   This is useful for things like room parents that enforce a consistent
728   "look" for each room's @desc.
729
730 See also: @exitformat, @nameformat, @conformat, @idescformat
731 & @idescformat
732   @idescformat <object> [=<text>]
733
734   Replaces the usual description of the object when it is looked at from
735   within by player-specified text. The evaluated IDESCRIBE attribute
736   is passed as %0; the unevaluated IDESCRIBE can be acquired through
737   v(IDESCRIBE).
738
739   This is useful for things like object parents that enforce a consistent
740   "look" for each object's @idesc.
741
742 See also: @exitformat, @nameformat, @conformat, @descformat
743 & @nameaccent
744   @nameaccent <object> [=<accent template>]
745
746   When this attribute holds an accent template that has the same
747   length as the object's name, it is used to change the object's name
748   in some situations (How it shows up in speech, look, and a few other
749   commands). This allows for accented names without having to use the
750   accented characters directly in a name, which can make it harder for
751   people to type.
752
753   If a container has both a @nameaccent and a @nameformat, the
754   @nameformat is used.
755
756 See also: accent(), @nameformat
757 & @nameformat
758   @nameformat <object> [=<format>]
759
760   Customizes the usual display of the object's name to people who
761   are inside it and 'look'. It is evaluated as if it were a description
762   or similar message on the room. The room's dbref is passed as %0,
763   and the default-formatted name as %1.
764
765   @nameformat is not used when people outside the object look at it.
766
767   Example: Show the room's zone after its name.
768   @nameformat here = %1 [if(isdbref(zone(%0)),<[name(zone(%0))]>)]
769
770 See also: @exitformat, @conformat, @descformat
771 & @cost
772   @cost <object> = <amount>
773
774   This sets the number of pennies that need to be given to an object to
775   trigger its @pay/@opay/@apay attributes. It is evaluated, so you
776   may use functions as well as simple integers; the amount given by
777   the player is passed as %0.
778
779   Example:
780     @cost exit-machine=10
781     @apay exit-machine=@open %N-exit
782     @pay exit-machine=Your exit has been created. 
783  
784     give exit-machine=10
785     > Your exit has been created.
786     (The exit will also have been opened by the machine.)
787
788     @cost charity=%0
789     @pay charity=Thanks for your donation of %0.
790
791 See also: give, MONEY, @pay, money()
792 & @cpattr
793 & @mvattr
794   @cpattr[/noflagcopy] <obj>/<attr> = <obj1>[/<attr1>] [,<obj2>/<attr2>,...]
795   @mvattr[/noflagcopy] <obj>/<attr> = <obj1>[/<attr1>] [,<obj2>/<attr2>,...]
796  
797   @cpattr copies an attribute from one object to another, or several
798   others. @mvattr does the same thing, except it also removes the original
799   attribute from the original object. Attribute flags ARE copied as well,
800   unless you use the /noflagcopy switch, which you probably want if you're
801   copying from a non-standard attribute to a standard one.
802
803   For example:
804     @cpattr box/test = box/test1, cube/random, tribble/describe
805
806   would check the object "box" for an attribute named TEST and then
807   copy it to the attributes TEST1 on "box", RANDOM on the object named
808   "cube", and DESCRIBE on the object named "tribble".
809
810   If you leave out the destination attribute, the attribute is copied
811   to one of the same name on the new object. For example:
812     @cpattr box/test=cube
813   would copy the TEST attribute from "box" to TEST on "cube".
814
815 See also: ATTRIBUTES, NON-STANDARD ATTRIBUTES
816 & @create
817   @create <name> [=<cost>]
818
819   Creates a thing with the specified name. Creating a thing costs
820   a certain amount of MUSH money, which usually defaults to 10 pennies.
821   You can specify a higher cost if you wish, but not a lower one.
822   This cost is refunded if you @destroy/@recycle the thing.
823
824   Once you have created a thing, you can use it as a PUPPET, to store
825   USER-DEFINED COMMANDS, or just as a prop. Some MUSHes choose to limit
826   the number of objects that players can create by setting a QUOTA.
827  
828 See also: give, @quota, MONEY
829 & @dbck
830   @dbck
831   This is a wizard only command.  It forces the database to perform a
832   series of internal cleanup and consistency checks that normally run
833   approximately every 10 minutes:
834
835   1. For every object, make sure its location, home, next, contents,
836      parent, and zone fields are valid objects.
837   2. Check for disconnected rooms that aren't set FLOATING
838   3. For every exit, player, or thing, make sure there is exactly one
839      way to reach it from a room by following the contents fields of
840      non-exits, the next fields of non-rooms, and the exits fields of
841      rooms.
842   4. For every thing or player, make sure that it is in the contents
843      list of its location. Make sure every exit is in the exits list
844      of its location.
845   5. Check that objects being used as zones have a @lock/zone.
846
847   @dbck no longer performs an @purge. The results of @dbck are written
848   to the game's error log, and not reported to the Wizard.
849
850 & @death
851   @death <player> [=<message>]
852
853   This command sets the message displayed to the killer when <player>
854   is killed. Typing just '@death <player>' or '@death <player>='
855   without a message will clear the currently set message.
856
857   Example:
858    @death me=You have just slain Cyclonus!
859
860   Note that some MUSHes choose to disable the KILL command, which makes
861   this attribute rather pointless.
862
863 See also: kill, BEING KILLED, @odeath, @adeath
864 & @decompile
865   @decompile[</switch>] <object>[/<attribute-pattern>]
866   @decompile/prefix <object>[/<attribute-pattern>]=<prefix>
867
868   This command produces a list of the commands that you would have to
869   enter in order to recreate <object>. Useful for either copying objects
870   from one MUSH to another, or for making logs of important objects to
871   protect against an accidental @nuke or a crash.
872
873   When the /prefix switch is specified, and a prefix given, all output
874   lines will be prefixed with <prefix>. Good for creating client-side
875   scripts to edit code with.
876
877   You can either @decompile an entire object, or just certain parts of it.
878   To @decompile just a few attributes, for example, you could type:
879
880       @decompile <object>/<attribute name>
881
882   for each attribute. You can also use wildcards in <attribute name> to
883   @decompile a list of similarly-named attributes.
884
885 (continued in help @decompile2)
886 & @decompile2
887   @decompile takes five switches: /db, /flags, /attribs, /tf, /skipdefault
888   Multiple switches may be usefully combined (other than /tf).
889
890   @decompile/db
891     This command makes @decompile use the object's DBREF # instead of its
892     name, which is useful for editing code off-MUSH.
893   @decompile/flags
894     Only the code to @create the object and set flags/powers/locks is printed.
895   @decompile/attribs
896     Only the code to set the object's attributes is printed.
897   @decompile/skipdefault
898     Don't output commands to set attribute flags if those flags are the
899     defaults for that attribute on that MUSH.
900  
901   If an attribute contains special characters, such as %r or %t, ansi, pueblo,
902   or begins or ends with spaces, then the command sent will be an @set command
903   that has its special characters escaped, and with such %rs, %ts, and %bs as
904   to exactly duplicate the attribute as it is currently set.
905
906 (continued in help @decompile3)
907 & @decompile3
908
909   @decompile/tf <object>[/<attribute>]
910
911   Supplying the /tf switch makes @decompile act exactly as if you typed:
912   @decompile/prefix <object>[/<attribute>]=FugueEdit >%b
913
914   You can use a string other than "FugueEdit > " by setting your TFPREFIX
915   attribute.  You are strongly urged to do so. Using @decompile/tf with
916   the default prefix presents the opportunity for a malicious player
917   to load your TinyFugue command line with a harmful command for you to
918   execute inadvertantly.
919
920   The /tf switch is handy for grabbing code and placing it right
921   into your input window. To do this:
922
923     In TinyFugue:
924       /def -ag -mglob -p100 -t"FugueEdit > *" fe = /grab %-2
925
926     In SimpleMU:
927       Set your Options -> Grab Password
928       @set me=tfprefix:<grabpassword>FugueEdit >%b
929
930 See also: CLIENTS, ATTRIBUTES, WILDCARDS, MUSHCODE
931 & @describe
932 & @desc
933   @describe <object> [=<description>]
934
935   This command sets the description of the object, which will be seen
936   whenever something looks at the object with the command 'look <object>'.
937   Every object should have a description, even if just a short one
938   describing its purpose. If the [=<description>] is left out, the desc.
939   on the object will be reset to nothing. When you look at something that
940   has no desc., you are told, "You see nothing special."
941
942   @describe can be abbreviated as @desc
943
944 See also: look, @adescribe
945 & @destroy
946 & @recycle
947 & @nuke
948 & @undestroy
949 & @unrecycle
950   @destroy[/override] <object>  OR   @recycle[/override] <object>
951   @undestroy <object>           OR   @unrecycle <object>
952   @nuke <object>
953
954   NOTE: @destroy and @recycle are the same command - some MUSHes
955   choose to use @recycle instead of @destroy to avoid the typo of
956   '@dest obj' for '@desc obj'. Others use @destroy. @nuke is an alias
957   for @dest/override.
958
959   Recycles <object> and returns the player's investment (the cost of
960   @create). You should always @destroy objects you no longer need;
961   this keeps the database down to a manageable size.  When an object
962   is @destroyed, it is set GOING, its queue is cleared and any
963   semaphores are drained, and its ADESTROY attribute is immediately
964   triggered.
965
966 (continued in help @destroy2)
967 & @destroy2
968
969   GOING objects are actually removed from the db approximately every
970   10-20 minutes. Until then, you may use the @undestroy/@unrecycle
971   command to abort the destruction sequence. If you @undestroy an
972   object, its STARTUP attribute is triggered. If you @destroy a
973   GOING object, it is purged immediately.
974
975   Wizards may @nuke players. If the destroy_possessions config option
976   is set (see @config), destroying a player destroys all non-SAFE
977   things the player owns, and @chowns SAFE things to God. If not,
978   destroying a player @chowns all their objects to God.
979
980 See also: SAFE, GOING, DESTROY_OK 
981 & @dig
982   @dig[/teleport] <room name>[=<exit name>;<alias>*,<exit name>;<alias>*]
983  
984   This command is used to create a new room, possibly with exits linking
985   it to the room you are standing in. This command normally costs 10 pennies,
986   although some MUSHes may have different amounts or may restrict this
987   command to those with the builder @power.
988  
989   @dig/teleport will automatically @tel the digger to the new room.
990
991   If you use the long form of this command, an exit to the new room
992   from the one you are standing in and an exit back from the new room
993   will both be automatically @open'ed and @link'ed. You may have as
994   many or as few exit aliases for an exit as you like, separated in the
995   command by semicolons. The exit leading to the new room is separated
996   from the exit leading back by a single comma.
997
998 (continued in help @dig2)
999 & @dig2
1000   Examples:
1001   @dig Kitchen
1002     This command will create a new room named 'Kitchen'. You will be informed
1003     what the dbref # of this room is.
1004
1005   @dig Kitchen = Kitchen <N>;n;north;kitchen;k
1006     This will create the room as above and also open an exit leading
1007     to it named "Kitchen <N>;n;north;kitchen;k". It will appear in the
1008     list of Obvious exits as just "Kitchen <N>", but you will be able to
1009     go through it by typing any of the following: n, k, north, kitchen
1010     It will NOT create an exit coming back from the Kitchen room.
1011
1012   @dig Kitchen = Kitchen <N>;n;north;kitchen;k,Out <S>;s;south;out;o
1013     This will do just the same as the above, except it will also create
1014     an exit named "Out <S>;s;south;out;o" coming back from the kitchen
1015     to whatever room you are currently in.
1016
1017 See also: @open, @link, EXITS, @create, DBREF
1018 & @doing
1019   @doing <message>
1020   @doing/header <message>
1021
1022   This command sets a short message that shows up in the WHO/DOING listing
1023   next to your name. @doing/header <message> works exactly like @poll and
1024   can only be used by Wizards or those with the poll power.
1025
1026 See also: @poll, WHO, DOING
1027 & @dolist
1028   @dolist[/notify][/delimit] [<delim>] <list> = <action>
1029  
1030   @dolist executes the <action> for each element in <list>. If <list> is a
1031   function, it will be evaluated to obtain the necessary list to use. It
1032   may be any space-separated list of strings, which can be object numbers,
1033   attributes, or arbitrary words. If the /delimit switch is given, the first
1034   character of the list is used as the separator, instead of space.
1035  
1036   <action> is a command or list of commands enclosed in braces { }
1037   and is performed once for every item in <list>. The special symbol "##"
1038   is replaced by the corresponding item from <list>.  The special symbol
1039   "#@" is replaced by the position of that item in the list.
1040  
1041   If the /notify switch is used, a "@notify me" is queued after all the
1042   list commands. This is useful for object synchronization with semaphores.
1043    
1044   Example: @dolist [lcon(here)] = "[name(##)]
1045     would cause you to say the name of all objects in the room.
1046 & @drain
1047   @drain[/any][/all] <object>[/<attribute>][=<number>]
1048  
1049   This command discards commands waiting on a semaphore without
1050   executing them.
1051
1052   If the /any switch is given, then all semaphores associated with
1053   <object> are @drained.  Otherwise, the only the specified semaphore
1054   attribute (or SEMAPHORE if no attribute is specified) is @drained.
1055
1056   If the /all switch is given, then all queue entries associated
1057   with the selected semaphore(s) are discarded, and the semaphore
1058   attribute(s) are cleared.  Otherwise, only the indicated <number>
1059   of queue entries are discarded.  If no <number> is given, then
1060   the /all switch is assumed.
1061
1062   You may not specify both the /any switch and a specific attribute.
1063   Similarly, you may not specify both the /all switch and a number.
1064
1065   See also the help for: SEMAPHORES, @notify, @wait
1066 & @drop
1067   @drop <object> [=<message>]. <object> can be a thing, player, exit,
1068   or room, specified as <name> or #<number> or 'me' or 'here'. Sets
1069   the drop message for <object>. The message is displayed when a
1070   player drops <object>. Without a message argument, it clears the
1071   message.
1072
1073   On an exit, this message is sent to a player after they pass through
1074   the exit.
1075
1076 See also: drop, @odrop, @adrop.
1077 & @dump
1078   @dump [/paranoid] [check interval]
1079  
1080   This is a wizard only command that saves a copy of the current memory
1081   database out to a save file.  This preempts the normal regular dumping
1082   that the mud performs on its own.
1083  
1084   If the /paranoid switch is used, the game performs additional consistency
1085   checking which corrects possible data corruption. If a check interval
1086   is specified, the game writes confirmation of the dump to the checkpoint
1087   log file every <interval> objects. If no interval is specified, it is
1088   taken to be the size of the database, divided by 5.
1089   This switch should ONLY be used if a normal @dump is not being done
1090   correctly. Paranoid dumps should generally only be done by wizards with
1091   access to the account on which the MUSH is running, since others will
1092   not have access to the checkpoint log file.
1093 & @ealias
1094   @ealias <object> = <enter alias>
1095
1096   This allows a player to type the enter alias instead of "enter <object>"
1097   If you have a chair, you could "@ealias chair = sit down" and then just
1098   type "sit down" instead of "enter chair" - using the object name is
1099   not necessary. Note that the enter alias is checked after normal exits.
1100   Like an exit, it may have a semicolon separated list of words,
1101   i.e. sit down;sit;sit on chair
1102 & @edit
1103 & @gedit
1104   @edit[/first][/check] <object>/<pattern> = <search>,<replace>
1105   @edit[/check] <object>/<pattern> = $,<string to append>
1106   @edit[/check] <object>/<pattern> = ^,<string to prepend>
1107
1108   This is useful when you don't want to have to retype those obnoxiously
1109   long descriptions just to make one little change.  Instead, search and
1110   replace via @edit. 
1111  
1112   <pattern> is a pattern, optionally containing wildcards, for the attribute
1113   names you wish to edit. Only attributes already defined on <object> may be
1114   edited. <search> and <replace> are two strings. It's also possible to use
1115   "$" and "^" to signal appending and prepending text, respectively.
1116  
1117   If the text contains commas, percent signs, or similar special characters,
1118   it usually must be enclosed in curly braces.
1119
1120   If the /first switch is used, only the first occurrence of <search>
1121   is replaced.
1122
1123   If the /check switch is used, the editing is not actually done, but the
1124   results are shown to you (with changes hilighted) as if a normal @edit
1125   was performed.
1126  
1127   See also ATTRIBUTES, edit()
1128 & @efail
1129   @efail <object> = <message>
1130   This is the message shown to the player who fails to enter the object.
1131 & @elock
1132   @elock <object> = <key>
1133   Enter-locks an object, restricting who is allowed to enter it. Special
1134   lock types are supported (see "help @lock" for details). Only objects
1135   which are ENTER_OK may be entered, regardless of the key.
1136  
1137   Rooms don't use ENTER_OK or @elock; they use @lock/teleport