Everything in the universe of a MUSH (Rooms, Exits, Objects, Players, etc...) are represented in the same way at the program level. A room merely has the room flags set and a player has the player flags set. In addition, flags also give objects abilities or qualities. For instance, a wizard has the wizard flag set. That is what lets the program know he may use wizard abilities. An object or room may have the dark flag set. In the case of an object, this makes the object invisible to normal eyesight. In the case of a room, the room becomes too dark to see other objects or players.
For more specific information on a particular flag, click on the flag name.
| A - Abode, Ansi | C - Chown_Ok, Color | D - Dark |
| E - Exit (type) | F - Floating, Fixed | G - Going |
| H - Haven | I - Inherit | J - Jump_Ok, Judge |
| L - Link_Ok | M - Monitor | N - Nospoof, No_Tel, No_Leave |
| O - Opaque | P - Player (type) | Q - Quiet |
| R - Room (type) | S - Sticky | U - Unfindable |
| V - Visual | W - Wizard | X - Safe |
| Z - Zone, Z_Tel |
| a - Audible | b - Debug | c - Connected, Cloudy |
| d - Destroy_Ok | e - Enter_Ok | f - Force_White |
| g - Gagged | h - Halt | j - Jury_Ok |
| l - Light | m - Myopic | n - No_Command |
| o - On-Vacation | p - Puppet | r - Royalty |
| s - Suspect | t - Transparent | u - Uninspected |
| v - Verbose | w - No_Warn | x - Terse |
| z - Startup | ? - Unregistered |
Some flags may not be enabled on some MUSHes.
Some flags only apply to certain types of objects. Objects can be one of:
Flags in the "All" category below can be applied to any object type (for example, any type of object can be DARK). Therefore any object type can use the flags in the "All" category, and in addition use any flag in its own category. For example, a player could be DARK and TERSE.
| Object type | Possible flags |
|---|---|
| All | AUDIBLE, CHOWN_OK, DARK, DEBUG, ENTER_OK, HALT, HAVEN, INHERIT, LIGHT, LINK_OK, NO_COMMAND, NO_WARN, OPAQUE, QUIET, ROYALTY, SAFE, STICKY, TRANSPARENT, UNFINDABLE, VERBOSE, VISUAL, WIZARD |
| Players | ANSI, COLOR, FIXED, FORCE_WHITE, GAGGED, JUDGE, JURY_OK, MONITOR, MYOPIC, NOSPOOF, ON-VACATION, SUSPECT, TERSE, UNREGISTERED, ZONE |
| Things | MONITOR, DESTROY_OK, PUPPET, NO_LEAVE |
| Rooms | ABODE, FLOATING, JUMP_OK, MONITOR, Z_TEL, NO_TEL, UNINSPECTED |
| Exits | CLOUDY |
By examining an object you can see its flags, in both brief and long form. The brief form is just the flag letter (from the table below). The long form is the name of the flag. For example:
examine me
Nick(#66PQUeA)
Type: Player Flags: QUIET UNFINDABLE ENTER_OK ANSI
Notice that the upper and lower-case flags are different. For example, R=Room, but r=Royalty.
In the example above the flags are "PQUeA", namely:
PLAYER QUIET UNFINDABLE ENTER_OK ANSI
The #66 before the flags is this object's database number.
For objects you own (such as yourself, and objects you created) you are automatically shown their flags, for example:
look
Nick's House(#70Rn)
Obvious exits:
Town Square
This helps you to see an object's characteristics at a glance. If you find this annoying you can set yourself "myopic" in which case you don't see the database number and flags. In other words:
@set me = myopic
@set <object> = <Flag>
For example:
@set me = quiet
@set here = dark
@set <object> = !<Flag>
For example:
@set me = !quiet
@set here = !dark
If a room is set ABODE, any player can set his home there, and can set the homes of objects there. It does not mean that a player can open an exit to that room, only that they can set their home there. This flag should not be set unless you want to make the room a public 'living area'.
When set on a player, this flag bold-hilites the names and owners of attributes when the player "examines" an object. This makes it much easier to pick out where attributes begin and end, when examining complex objects. You must be using a terminal which supports ANSI control codes in order for this to work.
See also the COLOR flag. If COLOR is not set, and ANSI is, you will see vt100 ANSI codes, but not color ANSI codes.
Exits that are AUDIBLE propagate sound to their destinations. In other words, any message - emit, say, or pose - that is heard in the source room of the exit is passed on to the contents of the exit's destination room. The message is prepended with the exit's @prefix attribute; if there is no @prefix, the default is used:
"From <name of the exit's source room>,"
Messages matching a certain pattern may be filtered out by using @filter on an exit; read 'help @filter' for more.
In order for exits in a room to propagate sound, the room must also be set AUDIBLE. If the room is audible, exits that are audible show up on a @sweep, even if they are set DARK.
This flag is also valid for things. If an object is set AUDIBLE, any messages which originate from its contents will be broadcasted to the outside world. This makes it very simple to program vehicles. Like AUDIBLE on exits, the message is prepended with the thing's @prefix attribute, and messages matching certain patterns may be filtered with @filter. If there is no @prefix, the message will be prepended with "From <name of AUDIBLE object>," The AUDIBLE object does not receive its own propagated messages.
The AUDIBLE flag allows most "emitters" (objects that listen for messages and broadcast them to other rooms) to be eliminated. The message is propagated only to the next room and no farther, so there is no danger of looping.
This flag, when set, allows you to transfer ownership to another player. To set it, you must be carrying the object. You also have to be in the room if you want to set this flag on rooms or exits. After this flag is set, the new player may gain ownership of the object by using the @chown command.
If this flag is set on a (non-TRANSPARENT) exit, when a player looks at the exit they will see the contents of the destination room following the exit's description.
If the flag is set on a TRANSPARENT exit, when a player looks at the exit they will see only the description of the destination room following the exit's description, and will not see contents.
When set on a player, this flag allows the player to see ANSI color. The ANSI flag must also be set.
This flag applies only to players and it shows if the player is connected or not. Thus, each time you are connected to the game, you should see the 'c' flag set, otherwise, you are DEAD! You cannot reset this flag, and it is used internally by the code for things like tabulating players for the WHO list, etc.
If a room is DARK, then no items are shown when a person 'looks' there. If a thing is DARK, then "look" does not list that object in the room's Contents:, and if an exit is DARK, it doesn't show up in the Obvious Exits: list. Puppets and objects that can listen cannot be DARK. Note that players, puppets, and other "hearing" objects still trigger enter/leave messages when in DARK areas. There is a config option for "full invisibility": players and objects that are dark will be slightly disguised in speech and poses. Such actions by these objects will show as being from Someone or Something depending on whether it was an object or wizard player.
Players who can hide from the WHO list should use @hide/on and @hide/off to control this, not the DARK flag. While any player can turn off their DARK flag, only Wizards can set their DARK flag.
Wizards who are DARK "disappear" completely -- they are not on the WHO list, do not announce connects and disconnects, etc.
The DEBUG flag is used for debugging MUSHcode. It is meant to be used in conjunction with the VERBOSE flag. If an object is set DEBUG, all parser evaluation results will be shown to the object's owner, in the format: #<object dbref>! <string to evaluate> => <evaluated string> Note that verbose output is "#obj]" - debug output is "#obj!".
Because the parser does recursive evaluations, you will see successive messages evaluating specific parts of an expression. This enables you to pinpoint exactly which evaluation is going wrong.
Objects run under this flag are computationally expensive. Avoid leaving it set on objects.
During a DEBUG evaluation, the flag is temporarily reset; therefore, a test for HASFLAG(), FLAGS(), etc. in the debug execution will show that the DEBUG flag is not set (although the actual output will be correct.)
Example - create "test", and set it DEBUG. > @va test=$wc
*:"String %0 has [strlen(%0)] letters and [words(%0)] words.
> wc This is my test string
#14! String %0 has [strlen(%0)] letters and [words(%0)] words. => String This
is my test string has 22 letters and 5 words.
#14! strlen(%0) => 22
#14! %0 => This is my test string
#14! words(%0) => 5
#14! %0 => This is my test string
Test says, "String This is my test string has 22 letters and 5 words."
The DESTROY_OK flag allows anyone who is holding an object to @destroy it. This is good for "temporary" objects like "Can of Cola". DESTROY_OK takes precedence over SAFE.
If an object or person is ENTER_OK, other players may enter the object or person by using 'enter <object/person>. Only objects which are ENTER_OK may be entered, regardless of the enter lock. Players must also have the ENTER_OK set if they wish to be able to receive things given to them by other players via the 'give <player> = <object>'.
An exit links one room to another room. If an exit is set DARK it will not show up in the list of obvious exits in a room.
When this flag is set on a player, it prevents them or any of their objects from using the @tel or home command. The only exception is that a player's objects are permitted to @tel themselves to the player's inventory.
If a room is set floating, you will not be notified every 10 minutes or so that you have a disconnected room.
A disconnected room may mean (depending on how the MUSH is configured) a room that can't be reached from room #0, or a room that can't be reached from room #0 and has no exits.
When set on an ANSI player, this player causes the ansi code to reset the font color to white to be sent after everything the player sees. Necessary for players with broken ansi clients which "bleed".
This flag is aliased to "WEIRDANSI" as well.
When set on a player, it disables him from doing anything except moving and looking. He cannot talk, page, build, pose, get or drop objects. (Yet another consequence of annoying the wizards.) Only wizards can set this flag.
Used internally for the @destroy command, it is set on things that are scheduled to be destroyed. To prevent a GOING object from being destroyed, use the @undestroy (or @unrecycle) command. You can no longer @set the object !GOING.
While this flag is set, the object cannot perform any mush actions, listen, be triggered, evaluate functions or substitutions, etc.
If a room is HAVEN, you cannot kill in that room. If a player is set HAVEN, he cannot be paged.
INHERIT is a security flag used to prevent objects without authorization controlling other objects. There are two classes of objects:
"Inherit" objects include:
Only "Inherit" objects (with the same owner) can control other "Inherit" objects. An exception is that a non-"Inherit" object may @trigger any Link_Ok object with the same owner.
For zoned objects, the INHERIT flag protects against an object from being controlled by anything not owned by its owner. This prevents someone who controls a zone from doing things like @forcing an INHERIT object to @force its owner.
Note that only Wizard objects can control Wizards, and only Royalty objects can control Royalty, regardless of INHERIT status.
Here are the rules of control (which apply in order):
These flags may be used by the MUSH to support some form of Judged RP system. Or they may not be compiled in.
When a room is set JUMP_OK, then that room can be teleported into by anyone.
Objects, players, and exits which have the LIGHT flag set on them (and are not also set DARK) appear in the contents of DARK rooms.
If a something is LINK_OK, anyone can link exits to it (but still not from it). Also, LINK_OK overrides the INHERIT protection against @trigger (although not @force or @set).
When set on a player, this flag notifies that player when anyone connects to or disconnects from the MUSH. It is valid only for players, and must be set by a wizard (although royalty may set themselves MONITOR).
When set on a thing or room, this flag activates the ^ listen patterns on the object. Objects which have ^ listen patterns but are not set MONITOR do not check those patterns, although they are flagged on a @sweep as listening.
Myopic is a flag which suppresses the printing of an object's dbref number and abbreviated list of flags when it is looked at. It makes the world appear like you don't control any of it, even if you're a wizard or royalty. It's useful if you don't like to see object numbers. This flag is only valid for players; objects belonging to MYOPIC players are automatically considered to be MYOPIC.
The NO_COMMAND flag disables the checking of $-commands on an object. Most MUSHes will be configured to automatically set this flag on rooms and players. The server runs faster when fewer objects are checked for $-commands; thus, any object which does not have $-commands on it should be set NO_COMMAND.
If an object is set NOSPOOF, @emits, @oemits, @remits and @pemits will be distinctively tagged to help prevent spoofing. This flag is only valid for players; objects belonging to NOSPOOF players are automatically considered NOSPOOF. Beware: the output format of NOSPOOF can mess up @listen and ^ patterns, giving unexpected results.
When this flag is set on an object, players can not "leave" it. Attempts to leave the object will trigger its @LFAIL, @OLFAIL, and @ALFAIL, if set.
The NO_TEL flag prevents objects in a room from being @teleported; mortals in the room cannot use @teleport, nor can other objects @teleport them out. This flag is checked on the "absolute room" of an object; thus, if you are in a container in a room which is NO_TEL, you cannot use @teleport from that container. There is no way to get out of a NO_TEL room except by exiting in some "normal" manner, or by going "home". Puzzle rooms, prisons, and similar locations would probably benefit from this flag.
This flag is enabled with the MUSH building warning system.
When this flag is set on an object, its owner will not receive any building warnings from that object. When it is set on a player, that player will not receive any building warnings at all.
This flag may be used by the MUSH to allow players to indicate when they have left for vacation, to prevent themselves from being purged for inactivity. It is automatically cleared whenever a player logs in, so players should @set it just prior to leaving the net.
When set on yourself, it prevents other players from seeing what you are carrying in your inventory. This applies to everyone and everything, even wizards and royalty, or to stuff that you own.
When set on an exit in a TRANSPARENT room, the exit is displayed as if the room weren't TRANSPARENT.
The PLAYER flag identifies you as a player. This flag cannot be reset by any player, not even a Wizard. It is used mainly by the mush code to identify your commands, check for validity of commands or locks etc. Generally, just pretend it isn't even there.
Once an object is a puppet it will relay all that it sees and hears to its master. All objects created by a puppet are owned by its master. When puppets spend or earn pennies they are also taken from and given to its master. In order to prevent puppets from screwing up puzzles, objects may have the key flag set, which will prevent puppets from picking the object up. A puppet may be commanded by its master by:
@force [object]=command
or by the shorthand version,
[name/# of puppet] command
Example:
@force fred="hi there
fred "hi there
#4342 "hi there
This flag when set on yourself prevents you from hearing the 'set' or 'triggered' messages from any objects you own. When set on an object, only that object will not relay its messages.
This flag is automatically set on rooms when you @dig a new room. It cannot be changed.
If this flag is set on any type of object, then that object will be able to @tel and examine as if it was a wizard. Royalty players do not need money, nor are they affected by quotas or restricted building. Royalty is not able to change things like a wizard could. Only wizards may set it on players, although players who are ROYALTY may set their objects ROYALTY.
The SAFE flag protects objects from destruction. If the REALLY_SAFE option was set when the MUSH was compiled, the only way to destroy an object set SAFE is to explicitly reset the SAFE flag and then @dest it. If the REALLY_SAFE option is not set, @destroy/override (or @nuke) will override the SAFE flag and destroy the object.
This flag is automatically set or reset when you set or clear the STARTUP attribute on something. Players may not set this flag. The presence of this flag just shows that an object has a STARTUP attribute on it.
If a thing is STICKY, it goes home when dropped. It also goes home when an object carrying it teleports or goes home. If a room is STICKY, its drop-to is delayed until the last person leaves. This flag is only meaningful for things and rooms.
This flag is only settable by wizards. Players with this flag have their connects, disconnects, name changes, and kills reported to all connected wizards.
When an object is set TERSE, it does not see the descriptions or success/failure messages in rooms. This is a useful flag if you're on a slow connection or you're moving through a familiar area and don't want to see tons of text. This flag is only valid for players; objects belonging to TERSE players are automatically considered to be TERSE.
If this flag is set on an exit, when a player looks at the exit they will see the description and contents of the destination room following the exit's description. The exit list and succ/fail messages of the room will NOT be displayed. See also CLOUDY
If this flag is set on a room, it will display exits in "long" format. Instead of putting all the exits on one line under "Obvious exits:" it prints each exit on a line by itself, in the format: <Exit Name> leads to <Exit Destination>.
Thus, you might have:
Obvious exits:
South leads to Joe's Room.
East leads to City Park.
instead of
Obvious exits:
South East
Exits set OPAQUE are still shown in the short format, so you can mix the two.
If a player is set UNFINDABLE, he cannot be found by the @whereis command. You also cannot use loc(), locate(), and similar functions to find his location.
If a room is set UNFINDABLE, you cannot locate any of its contents via any means (@whereis, the loc() function, etc.)
If a wizard is set UNFINDABLE, and he is idle past the allowable maximum idle time, he will be set DARK automatically.
This flag may be used by the MUSH to indicate rooms which have not been inspected by the Building Council, Administration, etc.
This flag may be used by the MUSH to support on-line registration. The only restriction on UNREGISTERED players is that they may not be granted @powers.
An object set VERBOSE echoes the commands it executes to its owner before executing them. This differs from the PUPPET flag in that the owner sees the command itself, rather than the output from the command. This flag is extremely useful in debugging, especially if used in conjunction with the PUPPET flag. VERBOSE output follows the format "#<object>] <command>". Something like
"#1300] @trigger me/va"
is a good example of typical VERBOSE output.
The flag a lot of players have been waiting for. When set on your object, it allows other players to examine it and see all the object's attributes as if they owned the object. They cannot make any changes to the object.
If a person is WIZARD, they are a wizard, unkillable, subject to fewer restrictions, and able to use wizard commands. In general, WIZARDs can do anything using #<number> or *<player>. Only player #1 can set and unset the WIZARD flag of other players. No WIZARD can turn their own WIZARD flag off.
The ZONE flag is used to designate a player as a Zone Master. Objects owned by a Zone Master are controlled by anyone who passes the player's enter lock. This allows zoning based on ownership rather than on the zone field, and is more secure, although it does not allow for the "local master room" ability of "standard" zones.
The Z_TEL flag, when set on a zoned room or on the ZMO (Zone Master Object) of a room, prevents objects in the room from being @teleported out of the zone - that is, objects can only be @teleported to a room which is zoned to the same ZMO. Setting this flag on the ZMO affects all rooms zoned to it. Like no_tel, the "home" command will still work. This flag is intended for use in puzzle rooms and IC areas.
Comments to Gammon Software support
Page updated on Wednesday, 15 December 2004