schneelocke's fuzzball command dictionary. (C) 2002-08 Schneelocke. Released unter the terms of the GNU FDL. Table of Contents ----------------- 1. Notes 2. Changelog 3. Commands Appendices: A. valid names B. flags C. output types D. keystrings E. property types F. Interactive Sanity DB editor commands G. @tune parameters H. Files I. smatch patterns J. object flags (unfinished) K. _sys/ properties L. database dump formats (empty) M. MUF editor commands N. server command line options (empty) O. The standard MUF library (empty) P. MUF pragmas (empty) 1. Notes This file contains a (hopefully) complete description of all the builtin commands of the fuzzball MUCK server, along with other relevant and/or helpful information. It is loosely based on the older MUCK.doc document included with the fuzzball distribution, but was entirely written from scratch. Last update: Sat 2008-03-01 by Schneelocke. The most recent version of this file should always be available from the following URL: http://gnomishmines.org/files/fuzzball/fbcommands.txt Fuzzball versions used to compile this list: TinyMUCK 2.2fb5.68, TinyMUCK 2.2fb6.00rc6. Updates made for: TinyMUCK up to version 2.2fb6.06. Information for older fuzzball releases was taken from the CHANGESfb? files in Fuzzball's src/ directory. A big thank you to Vikie (aka Kara Foxfang, aka Loafer) and Tardis for helping me out and providing valuable insight, corrections and updates. A very special thank you to Revar and all the other fuzzball developers for making fuzzball! ************************************************************************* * HELP WANTED! * * * Want to help out? Found mistakes? Want to expand sections? Got ideas? * * If so, email me at ! * ************************************************************************* TODO (PRIORITY!): take care of FIXMEs TODO (PRIORITY!): proofread TODO: Complete Appendix J TODO: More complete comparison to TinyMUCK 2.2fb5 TODO: Maybe convert to Docbook/XML or something else (!= plain text)? TODO: Rearrange appendices; maybe turn them into regular chapters TODO (FEATURE): Complete Appendices L,N TODO (LONG-TERM): Complete Appendix O TODO (LONG-TERM): Appendix for MUF primitives TODO (LONG-TERM): Appendix for MPI commands TODO (LONG-TERM): Convert to in-depth guide for MUCK administration 2. Changelog * Sat Mar 01 2008 Schneelocke - Fix a typo in Appendix A. * Sat Feb 16 2008 Schneelocke - Fix @LIST entry. * Sat Apr 7 2007 Schneelocke - Tweaks to @ACTION, @BOOT, @CHOWN, @CLONE, @CONLOCK, @CONTENTS, @CREATE, @DIG, @EDIT, @FIND, @NAME, @NEWPASSWORD, @OPEN, @PASSWORD, @PCREATE entries * Sat Aug 6 2005 Schneelocke - Add Appendices O and P to TOC * Tue Aug 2 2005 Schneelocke - @TOAD: God can toad wizards in 6.04+ - @CHOWN: Wizards cannot chown to God in 6.05+ - m3_huh @tune option (6.06+) - @SHOWEXTVER added (6.06+) - Note removal of rwho @tune options in 6.06+ - Typos * Sun Jun 12 2005 Schneelocke - Move ignore_support, reserved_names, reserved_player_names smatch patterns to proper groups - Sort "Movement" @tunable group - Add ignore_bidirectional @tunable - Add muf_comments_strict @tunable - Add starttls_allow @tunable - Fix: addpennis_muf_mlev, movepennis_muf_mlev, pennis_muf_mlev @tunables are int, not bool - @version gives extra info in TinyMUCK >=2.2fb6.04 - Add empty Appendix P: MUF pragmas - Typo fix * Sat Jan 29 2005 Schneelocke - Convert tabs to spaces to avoid layout breakages - Other whitespace fixes - Typo fixes - Grammar fixes ("it's" -> "its") - Get rid of talking about "you" where possible, for clarity - Reword @SANFIX entry - Move @SANITY entry to fix alphabetical ordering of commands - Minor rewording in @TELEPORT entry - Add empty Appendix O: The standard MUF library * ??? ??? ?? ???? Schneelocke - Create empty Appendix N: Server commandline options * Wed Mar 17 2004 Schneelocke - begin work on Appendix J: object flags. - document I, N and R flags. - create Appendix K: _sys/ properties. - create skeleton for Appendix L: database dump formats. - create Appendix M: MUF editor commands. * Mon Jan 12 2004 Schneelocke - add new @tuneables for TinyMUCK 2.2fb6.02. - license change from GNU GPL to GNU FDL * Mon Jan 27 2003 Schneelocke - wizard players are not idle-booted. * Sun Dec 29 2002 Schneelocke - typo fixes. - layout updates. * Tue Nov 12 2002 Schneelocke - fix some typos. - prepare for initial inclusion in fb distribution. - create skeleton for Appendix J: object flags. 3. Commands [#] restricted with GOD_PRIV [*] restricted to WIZARDs [P] restricted to MUCKERs [B] restricted to BUILDERs [+] restricted to players [(*)] partially restricted to WIZARDs (see description for details) [(B)] partially restricted to BUILDERs (see description for details) [F] cannot be forced [C] must be typed in all capitals [U] must be typed in full [S] sanity command [6] new/changed in TinyMUCK 2.2fb6 [~] optional @ACTION [B6] @action = [=]. Create a new action with the given name, which must be valid, and attach it to the specified source object the invoker controls, which may be given as 'me' or 'here' and can neither be an exit nor a program. The new action's name may be given as a list of individual names separated by semicolons; in this case, any of these names will be usable to use the action. If the optional regname argument is specified, the action will be registered on the invoker under the specified name (as _reg/) so it can later be referred to as $regname. This command was first introduced by TinyMUCK. The regname argument was first introduced in TinyMUCK 2.2fb3.6. In TinyMUCK 2.2fb6, if the enable_prefix @tune option is set, the names of a wizard-owned X-FORCIBLE action will be interpreted as command prefixes the same way '"' and ':' are. Creating an actions costs exit_cost pennies for non-wizards. See @ATTACH, @LINK, @OPEN, @UNLINK. See Appendix A for restrictions on valid names. See Appendix G for a description of tuneable parameters. @ARMAGEDDON [*] @armageddon []. Print the given message to all connected players, then shut down the game immediately. The database is *not* saved; for a regular shutdown, use @SHUTDOWN instead. The main purpose of this command is to avoid over-writing the saved database if it becomes apparent that the currently used database is corrupted, or if a large amount of objects or data have been accidentally destroyed. In versions prior to TinyMUCK 2.2fb6.00rc7, attempts by non-wizard players to use this command are not logged. This command was first introduced in TinyMUCK 2.2fb5.00. See @SHUTDOWN, @DUMP. @ATTACH [B] @attach =. Detach an action and attach it to a new source object the invoker controls. The new source object cannot be an exit or a program. Using @ATTACH on an action with a priority level resets its priority level to 0. See @ACTION. @BLESS [*F6+] @bless =. Bless the specified property / properties of the specified object, which may be given as 'me' or 'here'. If MPI contained in this property is evaluated, it will run with wizardly permissions. This command was first introduced in TinyMUCK 2.2fb6.00b1. See @UNBLESS. @BOOT [#*+] @boot . Disconnect a given player from the game. If the server was compiled with GOD_PRIV, God cannot be booted. If a player is connected more than once, their oldest connection is killed; in fuzzball versions prior to TinyMUCK 2.2fb4.0, their youngest connection was killed instead. Successful uses of @BOOT are logged. @CHLOCK @chlock [=]. Set the chown lock of an object the invoker controls, which may be given as 'here' or 'me'. If keystring is not given, the chown lock is cleared. The chown lock of an object, together with its CHOWN_OK flag, is used to determine whether non-wizards may chown the object. Using this command is equivalent to setting the object's _/chlk property, but also does some validity checking of the lock string. See Appendix D for a description the syntax of keystrings. This command was first introduced in TinyMUCK 2.2fb5.14. See @CHOWN, @LOCK. @CHOWN [#] @chown [=]. Set the owner of an object, which may be given as 'me' or 'here'. The new owner may be specified as 'me'. Non-wizards are subject to a number of restrictions with regard to this command: 1) they may not transfer ownership to anyone besides themselves. 2) they can only take possession of foreign exits that either link to an object they control or are not linked at all. 3) they cannot take possession of programs. 4) If the object in question is neither an exit nor a program, they can only take possession of it if its CHOWN flag is set and its chown lock does not prevent them from doing so. 5) they can only take possession of rooms they are in. 6) if the realms_control @tune option is set, they can never take possession of rooms with the WIZARD flag. 7) they can only take possession of things they carry. Wizard players are not subject to these restrictions, but cannot chown items to God if GOD_PRIV is defined in Fuzzball versions starting with TinyMUCK 2.2fb6.06. Ownership of players or garbage objects cannot be changed. Contrary to what is still said in some documentation files, the server need not be compiled with PLAYER_CHOWN for this command to be available to non-wizards. See @CHLOCK. See Appendix D for a description the syntax of keystrings. See Appendix G for a description of tuneable parameters. @CHOWN_LOCK [6] @chown_lock [=]. Alias for @CHLOCK. This command was first introduced in TinyMUCK 2.2fb6.00rc7. See @CHLOCK, @CHOWN. @CLONE [B6] @clone . Create an exact copy of a single object the invoker controls, including any and all properties, but without attached actions. If the verbose_clone @tune parameter is set, verbose output will be generated for wizards. This command was first introduced in TinyMUCK 2.2fb6.00rc7. See @CREATE. See Appendix G for a description of tuneable parameters. @CONLOCK @conlock [=]. Set the container lock of an object the invoker controls, which may be given as 'me' or 'here'. If keystring is not given, the container lock is cleared. Using this command is equivalent to setting the object's _/clk property, but also does some validity checking of the lock string. The container lock of an object is used to determine who may use the object as a container. This command was first introduced in TinyMUCK 2.2fb5.14. See @LOCK, GET, PUT. See Appendix D for a description of the syntax of keystrings. @CONTENTS @contents [= [=]]. List all objects contained in the specified object the invoker controls, which may be given as 'here' or 'me'. If the object is a room, thing or player, also list all exits attached to the object. If flags are specified, only those objects matching the specified flag are displayed. If outputtype is specified, the specified output type will be used. This command was first introduced in TinyMUCK 2.2fb5.00. See @ENTRANCES, @FIND, @OWNED. See Appendices B and C for an explanation of flags and output types. @CREATE [B] @create [= [=]]. Create a new object with the given name, which must be valid. If the optional cost is specified, the specified number of pennies will be used for creating the object (a minimum of object_cost must be paid). The new object will have a value of either ((cost / 5) - 1) or max_object_endowment pennies, whichever is lower. If the optional regname argument is specified, the object is registered on the user under the specified name (as _reg/) so it can later be referred to as $regname. Wizards do not lose pennies when using @CREATE. The regname argument was first introduced in TinyMUCK 2.2fb3.6. See @CLONE. See Appendix A for restrictions on valid names. See Appendix G for a description of tuneable parameters. @CREDITS @credits. Display credits for the server. This command was first introduced in TinyMUCK 2.2fb5.47. @DBGINFO [*6] @dbginfo cache|guitest|misc. If 'cache' is specified, print out some statistics related to cache usage. If 'guitest' is specified, attempt to open a demonstration dialog using MCP-GUI. 'misc' is currently (TinyMUCK 2.2fb6.00rc6) unused. In TinyMUCK 2.2fb5, only cache can be specified, and this is also the default if no parameter is given. @DELTA [6*~] @delta. Alias for @DLT. This command was first introduced in TinyMUCK 2.2fb6.00rc7. @DEQUEUE See @KILL. @DESCRIBE @describe [=]. Set the description of an object the invoker controls. If no description is specified, the object's description field will be cleared. If # is a MUF program, he message can be specified as @; this will cause the specified program to be run when the message is evaluated. From TinyMUCK 2.2fb3.5 on, using this command is equivalent to setting the object's _/de property. The description field is what is displayed when a player looks at an object. @DIG [B] @dig [= [=]]. Create a new room with the given name, which must be valid. If the optional parent, which may be given as 'here', is specified, that room will be set as the new room's parent room; otherwise, the current room's parent chain is searched until a room with its ABODE flag set is found, and the new room's parent will be set to that object. If no such room is found, the default parent, default_room_parent, is used. If the optional regname argument is specified, the room will be registered on the invoker under the specified name (as _reg/) so it can later be referred to as $regname. Digging a room costs room_cost pennies for non-wizards. The regname argument was first introduced in TinyMUCK 2.2fb3.6. See Appendix A for restrictions on valid names. See Appendix G for a description of tuneable parameters. @DLT [*~] @dlt. Save a delta dump of the database. Only available if the server was compiled with DELTADUMPS enabled. Delta dumps are also done automatically every dump_interval seconds. This command was first introduced in TinyMUCK 2.2fb5.00. See Appendix G for a description of tuneable parameters. @DOING @doing =. Set the doing message of an object the invoker controls. This command is only available when the who_doing @tune option is set; using it is equivalent to setting the object's _/doing property. This command was first introduced in TinyMUCK 2.2fb5.14. This command is usually overriden by a more advanved MUF program. See Appendix G for a description of tuneable parameters. @DROP @drop object [=]. Set the drop message of an object the invoker controls. If no message is given, clear the object's drop message. If set on a thing, this is the message displayed to a player who drops the object. If set on a exit, it is displayed to a player successfully using the exit upon entering the destination room. If set on a player, it is displayed to anyone who kills that player. If set on a room, it is displayed when an object is dropped in there. If # is a MUF program, he message can be specified as @; this will cause the specified program to be run when the message is evaluated. From TinyMUCK 2.2fb3.5 on, using this command is equivalent to setting the object's _/dr property. @DUMP [*#] @dump [filename]. Save the database to disk. If a filename is given, use the specified file, and also use that file as a default for database dumps from now on. If the server was compiled with GOD_PRIV, only God can set new dump file names. Database dumps are also done automatically done every monolithic_interval seconds. On large MUCKs, this command can take a while to finish. See @ARMAGEDDON, @DLT. See Appendix G for a description of tuneable parameters. @EDIT [P+] @edit . Edit the specified MUF program the invoker controls, which must have been created with @MCPPROGRAM or @PROGRAM and which must not currently be @EDITed. See @MCPEDIT, @MCPPROGRAM, @PROGRAM. @ENTRANCES @entrances [= [=]. Show all objects that link to the specified object the invoker controls, which may be given as 'here' or 'me'. If flags are specified, only those objects matching the specified flag are displayed. If outputtype is specified, the specified output type will be used. See Appendices B and C for an explanation of flags and output types. This command was first introduced in TinyMUCK 2.2fb3.6; the flags argument was introduced in TinyMUCK 2.2fb3.7, and the outputtype argument was introduced in TinyMUCK 2.2fb4.2. See @CONTENTS, @FIND, @OWNED. @EXAMINE [*#S] @examine . Dump all available information about an object. From TinyMUCK 2.2fb5.52 on, if the server was compiled with GOD_PRIV, only God may use this command. This command is available in the Interactive DB Sanity Editor as 'p' (see Appendix F). This command was first introduced in TinyMUCK 2.2fb5.50. See @SANITY, @SANCHANGE, @SANFIX, EXAMINE. @FAIL @fail object [=]. Set the fail message of an object. If no message is given, clear the object's fail message. This is the message displayed to a player who unsuccessfully tries to use the object. If # is a MUF program, he message can be specified as @; this will cause the specified program to be run when the message is evaluated. From TinyMUCK 2.2fb3.5 on, using this command is equivalent to setting the object's _/fl property. @FIND @find [= [=]. Search for objects that match the given name. If flags are specified, only those objects that also match these flags are displayed. If outputtype is specified, the specified output type will be used. The flags argument was first introduced in TinyMUCK 2.2fb3.5; the outputtype argument was first introduced in TinyMUCK 2.2fb4.2. For non-wizards, only objects the invoker owns are listed. This command costs lookup_cost pennies for non-wizards. See @CONTENTS, @ENTRANCES, @OWNED. See Appendices B and C for an explanation of flags and output types. See Appendix G for a description of tuneable parameters. @FLOCK @flock [=]. Set the force lock of an object the invoker controls, which may be given as 'here' or 'me'. If keystring is not given, the force lock is cleared. This is equivalent to setting the object's @/flk property, but also does some validity checking of the lock string. The force lock of an object is used to determine who may force the object. See Appendix D for a description the syntax of keystrings. This command was first introduced in TinyMUCK 2.2fb5.27. See @FORCE, @FORCE_LOCK. @FORCE [F#(*)] @force =. Force the given object, which may be given as 'here' or 'me', to execute the specified command. If the server was compiled with GOD_PRIV, God cannot be @FORCEd. In order for a non-wizard player to be able use this command, the zombie @TUNE option must be set, the target must be XFORCIBLE, force-locked to the invoker (see @FLOCK), and a thing; also, if the target is a thing, it must be set ZOMBIE, must not be DARK, must not share a common name with an existing player, and unless it is directly forced by a wizard, the location the target is in must not be set ZOMBIE, if it is a room. All successful uses of @FORCE are logged. See @FLOCK. @FORCE_LOCK [6] @force_lock [=]. Alias for @FLOCK. This command was first introduced in TinyMUCK 2.2fb6.00rc7. See @FLOCK, @FORCE. @IDESCRIBE @idescribe [=]. Set the idescription of an object the invoker controls. If no description is specified, the object's idescription field will be cleared. If # is a MUF program, he message can be specified as @; this will cause the specified program to be run when the message is evaluated. The idescription field is what is seen when looking around inside a vehicle. Using this command is equivalent to setting the object's _/ide property. This command was first introduced TinyMUCK 2.2fb5.00. @KILL [(*)] @kill |||all. If given a pid, remove the process the invoker controls with the specified pid from the time queue. If given the dbref number of a program, kill all instances of that program, and if given a player name, which may be given as 'me', kill all of that player's programs; these behaviours were introduced in TinyMUCK 2.2fb2.2 (?), and only wizards may specify a player other than themselves. 'here' may be given as an argument, but this will not actually do something. Wizards my clear the time queue completely by specifying 'all'. This command was added in TinyMUCK 2.2fb (?), and called @DEQUEUE in fuzzball versions prior to TinyMUCK 2.2fb3.2. @LINK [(B)] @link = [; ; ... ]. Link object1 to the specified target object(s). object1 may be given as 'me' or 'here.' The invoker must control object1, and the target(s) must either be controlled by the invoker or set LINK_OK. If object1 is an exit, it will point to the target(s) after linking; exits that are currently linked must be unlinked first with @UNLINK. Unlinked exits can be linked even if the invoker does not control them, provided the invoker's BUILDER flag is set; the invoker will become their new owner in the process. If object1 is a player or thing, linking it will set its home; target(s) may be specified as 'me' or 'here' in this case. If object1 is a room, linking it will set its dropto; target(s) may be specified as 'home' in this case. Linking an object costs link_cost pennies for non-wizards; if the invoker does not own the object being linked, the cost is (link_cost + exit_cost), and the owner of the object will receive exit_cost pennies. An exit can be linked to more than one, but at most MAX_LINKS destinations; only one player, program or room may be among these destinations. See @RELINK, @UNLINK. See Appendix G for a description of tuneable parameters. @LIST @list [=[-]]. List a MUF program, either in its entirety or by selecting a certain range of lines. The program must either be controlled by the invoker or set VEHICLE (VIEWABLE). @LOCK @lock [=]. Set the lock of an object the invoker controls, which may be given as 'here' or 'me'. The lock of an object is used to determine who may pick up the object. This is equivalent to setting the object's _/lok property, but also does some validity checking of the lock string. See Appendix D for a description the syntax of keystrings. See @CHLOCK, @CONLOCK, @FLOCK and @UNLOCK. @MCPEDIT [P6+] @mcpedit . Edit the specified MUF program, which must have been created with @MCPPROGRAM or @PROGRAM, and which must not currently be edited. This command is the MCP-GUI variant of @EDIT. This command is not available in TinyMUCK 2.2fb5. See @EDIT, @MCPPROGRAM, @PROGRAM. @MCPPROGRAM [P6+] @mcpprogram . Create a new MUF program with the specified name, or edit an existing program the invoker controls which must not currently be edited. This command is the MCP-GUI variant of @PROGRAM. This command was first introduced in TinyMUCK 2.2fb6.00rc7, and is not available in TinyMUCK 2.2fb5. See @EDIT, @MCPEDIT, @PROGRAM. @MEMORY [*~] @memory. Dump memory / allocation statistics. This command will only display any information if the server was compiled with MALLOC_PROFILING, or if the server was not compiled with NO_MEMORY_COMMAND. This command was first introduced in TinyMUCK 2.2fb5.12. @MPITOPS [*] @muftops [|reset]. Print MPI profiling statistics gathered since the statistics were last reset. If 'reset' is specified as an argument, clear statistics. Only the top programs are displayed. If count is not specified, a hardcoded default of 10 is assumed. This command was first introduced in TinyMUCK 2.2fb5.62 and TinyMUCK 2.2fb6.00a33. See @MUFTOPS, @TOPS. @MUFTOPS [*] @muftops [|reset]. Print MUF profiling statistics gathered since the statistics were last reset. If 'reset' is specified as an argument, clear statistics. Only the top programs are displayed. If count is not specified, a hardcoded default of 10 is assumed. This command was first introduced in TinyMUCK 2.2fb6.00a33. See @MPITOPS, @TOPS. @NAME @name = []. Rename an object the invoker controls; the new name must be valid. If the object specified is a player, the player's current password must be supplied. Successful renaming of players is logged. If an action with a positive priority level is renamed, its priority level is set to 0. See Appendix A for restrictions on valid names. @NEWPASSWORD [*#+U] @newpassword [=]. Assign a new password to the given player, which must be valid. If no password is specified, the player's password field is cleared. If the server was compiled with GOD_PRIV, only God can change a wizard's password, and God's password cannot be changed using this command. Successful uses of @newpassword are logged. See @PASSWORD. See Appendix A for restrictions on valid passwords. @ODROP @odrop object [=]. Set the odrop message of an object the invoker controls. If no message is given, clear the object's odrop message. If set on a thing, it is the message displayed to others, prefixed with the player's name, when a player drops the object. If set on a exit, it is displayed to others in the destination room when entered, prefixed with the player's name. If set on a player, it is displayed after the 'name killed victim' message. If set on a room, it is displayed when an object is dropped in there, prefixed with the object's name. If # is a MUF program, he message can be specified as @; this will cause the specified program to be run when the message is evaluated. From TinyMUCK 2.2fb3.5 on, using this command is equivalent to setting the object's _/odr property. @OECHO @oecho object [=]. Set the oecho message of an object the invoker controls. If no message is given, clear the object's oecho message. This message is prepended when objects inside a vehicle are notified of a message that vehicle receives. If not specified, it defaults to 'Outside>'. Using this command is equivalent to setting the object's _/oecho property. This command was first introduced in TinyMUCK 2.2fb5.41. @OFAIL @ofail object [=]. Set the ofail message of an object the invoker controls. If no message is given, clear the object's ofail message. This is the message which, prefixed with the player's name, will be displayed to others when a player unsuccessfully tries to use the object. If # is a MUF program, he message can be specified as @; this will cause the specified program to be run when the message is evaluated. From TinyMUCK 2.2fb3.5 on, using this command is equivalent to setting the object's _/ofl property. @OPEN [B6] @open [= [; ; ... ] [=]]. Open a new exit in the current room the invoker controls, with the given name, which must be valid, and optionally attempt to link it to the specified object(s); the rules for linking exits specified under @LINK apply. The new action's name may be given as a list of individual names separated by semicolons; in this case, any of these names will be usable to use the action. If the optional regname argument is specified, the exit will be registered on the invoker under the specified name (as _reg/) so it can later be referred to as $regname. The regname argument was first introduced in TinyMUCK 2.2fb3.6. In TinyMUCK 2.2fb6, if the enable_prefix @tune option is set, the names of a wizard-owned X-FORCIBLE action will be interpreted as command prefixes the same way '"' and ':' are. For non-wizards, opening the exit costs exit_cost pennies, and linking it costs link_cost pennies. The invoker needs to control the current room for this command to succeed. See @ACTION, @ATTACH, @LINK, @UNLINK. See Appendix A for restrictions on valid names. See Appendix G for a description of tuneable parameters. @OSUCCESS @osuccess object [=]. Set the osuccess message of an object the invoker controls. If no message is given, clear the object's osuccess message. This is the message which, prefixed with the player's name, will be displayed to others when a player successfully tries to use the object. If # is a MUF program, he message can be specified as @; this will cause the specified program to be run when the message is evaluated. From TinyMUCK 2.2fb3.5 on, using this command is equivalent to setting the object's _/osc property. @OWNED [(*)] @owned [] [= [=]. Show a list of all objects owned by the specified player. If flags are specified, only objects matching the specified flags will be displayed. If outputtype is specified, the specified output type will be used. See Appendices B and C for an explanation of flags and output types. The flags argument was introduced in TinyMUCK 2.2fb3.5; the outputtype argument was first introduced in TinyMUCK 2.2fb4.2. For non-wizards or if no player is specified, the invoking player is assumed. This command costs lookup_cost pennies for non-wizards. See @CONTENTS, @ENTRANCES, @FIND. See Appendix G for a description of tuneable parameters. @PASSWORD @password =. Changes the invoker's password, which must be valid. See Appendix A for restrictions on valid passwords. @PCREATE [*+] @pcreate =. Creates a new player with the specified name and password, both of which must be valid. Successful uses of @PCREATE are logged. Unlike in other branches of TinyMUCK, this command is not optional in fuzzball. See Appendix A for restrictions on valid names and passwords. @PECHO @pecho object [=]. Set the pecho message of an object the invoker controls. If no message is given, clear the object's pecho message. This message is prepended when players are notified of a message this object receives if it is a puppet. If not specified, it defaults to the object's name, followed by a '>'. Using this command is equivalent to setting the object's _/pecho property. This command was first introduced in TinyMUCK 2.2fb5.41. @PROGINFO [6] @proginfo <#dbref|all>. Print out information about a given MUF program. Wizards may specify 'all' as an argument to receive statistics for all recently-used MUF programs. This short-lived command was first introduced in TinyMUCK 2.2fb6.00rc7 and removed again in TinyMUCK 2.2fb6.01. @PROGRAM [P+] @program . Create a new MUF program with the specified name, or edit an existing program the invoker controls, which must not currently be edited. In fuzzball versions prior to TinyMUCK 2.2fb3.3, this command was called @PROG. See @EDIT, @MCPEDIT, @MCPPROGRAM. @PROPSET [(*)6] @propset =. Set a property on an object. Only wizards can set seeonly or hidden props (see Appendix E). The specified property must have the form [:]:. The type can be any of string, integer, float, dbref, lock and erase; if none is specified, string is assumed. If the type is 'dbref', 'me' and 'here' may be specified as a value. If an empty value is given, the specified property will be removed; sub-properties of property dirs will not be affected. If erase is specified as type, no value may be given, and the specified property will be erased. The float property type is not available in TinyMUCK 2.2fb5. @PS @ps. List events currently in the time queue which the invoker controls. This command was introduced in TinyMUCK 2.2fb (?), and was called @QUEUE in fuzzball versions prior to TinyMUCK 2.2fb3.2. @Q @Q. Kill the current foreground MUF program, if any. The name of this command can be #define'd at compile time. This command is a no-op when used outside of a MUF program, and it can not be used to exit the MUF editor. @QUEUE See @PS. @RECYCLE @recycle . Destroy an object the invoker controls, which may be given as 'here'. The global environment room and the player start room (player_start) may not be recycled. Objects can only be recycled by their owners; even wizards will have to @chown objects before recycling them. A puppet recycling itself will display a rather silly message. :) Players, running programs and garbage objects cannot be recycled this way; if a recycle is forced, neither the forcing object nor running programs can be recycled. Recycling an exit will give its owner exit_cost pennies; if the exit is linked, (exit_cost + link_cost) pennies will be given. Recycling a room will give its owner room_cost pennies. Recycling a thing will give its owner a number of pennies equal to its value. Recycling a program will kill all instances of that program (from TinyMUCK 2.2fb2.2 on), and also remove the program file from the server's muf/ directory. See Appendix G for a description of tuneable parameters. @RELINK [(B)] @relink = [; ; ... ]. Relink object1 to the specified target object(s). object1 may be given as 'me' or 'here.' The invoker must control object1, and the target(s) must either be controlled by the invoker or set LINK_OK. If object1 is an exit, it will point to the target(s) after linking. Unlinked exits can be linked even if the invoker does not control them, provided the invoker's BUILDER flag is set; the invoker will become their new owner in the process. If object1 is a player or thing, linking it will set its home; target(s) may be specified as 'me' or 'here' in this case. If object1 is a room, linking it will set its dropto; target(s) may be specified as 'home' in this case. Linking an object costs link_cost pennies for non-wizards; if the invoker does not own the object being linked, the cost is (link_cost + exit_cost), and the owner of the object will receive exit_cost pennies. An exit can be linked to more than one, but at most MAX_LINKS destinations; only one player, program or room may be among these destinations. If the destinations are not valid, the old link is retained. This command was first added in TinyMUCK 2.2fb6.00rc7. See @LINK, @UNLINK. See Appendix G for a description of tuneable parameters. @RESTART [*U] @restart. Save the database, shut down the game and restart it immediately. Attempts by non-wizards to use this command are logged. This command was first introduced in TinyMUCK 2.2fb5.10. See @ARMAGEDDON, @SHUTDOWN. @RESTRICT [*U] @restrict on|off. Controls whether login access is restricted to wizards. This command was first introduced in TinyMUCK 2.2fb5.50. @SANCHANGE [*#SU] @sanchange . Alter the basic structure of the universe, i.e., directly operate on the raw database data. If the server was compiled with GOD_PRIV, only God may use this command. Valid fields include exits, contents, next, location, home and owner. This command is available in the Interactive DB Sanity Editor as 'c' (see Appendix F). This command was first introcuced in TinyMUCK 2.2fb5.50. See @SANITY, @SANFIX. @SANFIX [*#SU] @sanfix. Try to repair the database. If the server was compiled with GOD_PRIV, only God may use this command. More than one attempt may be needed to fix the database, and it may be impossible to fix the database using this command; in this case, @SANCHANGE will have to be used to fix the database by hand. This command is available in the Interactive DB Sanity Editor as 'f' (see Appendix F). This command was first introduced in TinyMUCK 2.2fb5.55. See @SANITY, @SANCHANGE. @SANITY [*#SU] @sanity. Check database sanity. If the server was compiled with GOD_PRIV, only God may use this command. This command is available in the Interactive DB Sanity Editor as 's' (see Appendix F). This command was first introduced in TinyMUCK 2.2fb5.50. See @SANCHANGE, @SANFIX. @SET [(*)#] @set =. Set or reset a flag or property of an object the invoker controls. If used for properties, properties are specified as ':'; an empty value will remove that property, as well as any sub-properties if it is a property directory. If the invoker merely wants to remove a property directory's own value without removing its contents, use @PROPSET instead. An empty name with a value of 'clear' will remove all properties from the object. Integer properties can be added or changed by specifying a value that starts with a '^'; otherwise, properties will be string properties. Use @PROPSET to set float, dbref and lock type properties. Hidden or see-only properties (see Appendix E) can only be modified by wizards. If used for flags, WIZARD and XFORCIBLE flags and MUCKER levels cannot be set through forcing. Non-wizards may only set MUCKER levels on programs they own, and only up to their own MUCKER level, cannot set the XFORCIBLE flag on exits, cannot set the ABODE flag on programs, cannot set the ZOMBIE flag on players or things which are controlled by ZOMBIEs, cannot set VEHICLE flags on players, can only set VEHICLE flags on things if wiz_vehicles is not set and if they have a VEHICLE bit themselves, can only set the DARK flag of exits or things if exit_darking or thing_darking is set, respectively, cannot set the DARK flag on players and cannot set MUCKER levels or BUILDER flags at all. Wizards cannot remove their wizard bits, cannot set or reset the QUELL flag of another wizard (although they can force them to do it themselves), and cannot reset God's WIZARD flag if the server was compiled with GOD_PRIV. VEHICLE flags cannot be reset if the vehicle in question still has players in it. See @PROPSET. See Appendix G for a description of tuneable parameters. @SHOWEXTVER [6] @showextver. Shows the CVS revisions of the source and header files used to compile the server binary. First introduced in TinyMUCK 2.2fb6.06. @SHUTDOWN [*U] @shutdown. Save the database and shut down the game. Attempts by non-wizards to use this command are logged. See @ARMAGEDDON, @RESTART. @STATS [(*)] @stats []. Show database statistics. If the player argument is specified, statistics for that player's objects only are displayed; only wizards may specify a player other than themselves. Otherwise, the total number of objects, including garbage, is reported; for wizards, the number of rooms, exits, things, programs, players, garbage objects and old objects is also reported, as well as, if appropriate, the number of proploaded, propchanged and altered objects, as well as the time of the last database dump (if the server was compiled with DELTADUMPS). Support for players displaying their own stats using this command was added in TinyMUCK 2.2fb4.2. @SUCCESS @success object [=]. Set the success message of an object the invoker controls. If no message is given, clear the object's success message. This is the message displayed to a player who successfully tries to use the object. If # is a MUF program, he message can be specified as @; this will cause the specified program to be run when the message is evaluated. From TinyMUCK 2.2fb3.5 on, using this command is equivalent to setting the object's _/sc property. @SWEEP @sweep []. List all listeners for a specified object, which may be given as 'here' or 'me'. If no object is specified, the current room is used; otherwise, the invoker must control the specified object. This command also lists all listening rooms the invoker controls down the environment chain. This command was first introduced in TinyMUCK 2.2fb5.00. @TELEPORT @teleport [=] . Teleports the specified object, which may be given as 'here', 'home' or 'me', to the specified destination, which may also be given as 'me' or 'here'. If no object is given, the invoker is teleported themselves. Destination can be specified as HOME. Wizards can teleport any object to any destination, as long as the new location makes sense; non-wizards can do three things: 1) teleport themselves from a room they control to a room or vehicle they control; 2) teleport things and programs they control to rooms, players or things they control (in case the destination is a room which has a dropto and is not STICKY, the dropto is used as a destination instead); and 3) move rooms to rooms they can link to to set their parent. Use @ATTACH to move an action. @TOAD [*+U] @toad [=]. Turn a player into a slimy toad, disconnecting them from the game and effectively destroying their character; the player's password is reset, and they are turned into a thing. If a recipient has been specified, they will become the new owner of the player's possessions; otherwise, the player's possessions will go to God. In Fuzzball versions prior to TinyMUCK 2.2fb6.04, wizard players cannot be toaded; in later Fuzzball versions, only God can toad wizard players. Successful uses of @toad are logged. @TOPS [U] @tops [|reset]. Print MUF and MPI profiling statistics gathered since the last statistics were last reset. In fuzzball versions from fb5.58 on, if 'reset' is specified as an argument, clear statistics. Only the top programs are displayed. If count is not specified, a hardcoded default of 10 is assumed. This command was first introduced in TinyMUCK 2.2fb5.57 and TinyMUCK 2.2fb6.00a33. See @MUFTOPS, @MPITOPS. @TRACE @trace [=]. Show where the specified object, which may be given as 'here' or 'me', is located in the database's container hierarchy. Objects the invoker does not control and cannot link to are displayed as '**Missing**'. If the depth parameter is specified, only the first objects will reported. @TUNE [*] @tune [|save|load [=]]. If no parameter is specified, display current tuneable parameters. If save or load is specified, save or reload the tuning parameters file (see Appendix H), respectively; from TinyMUCK 2.2fb5.44 on, tuning parameters are also saved to the main database. If a valid parameter name and value are specified, set that parameter to the new value; from TinyMUCK 2.2fb5.30 on, a log notice is also taken. To specify an empty value for a string option, use '-'. If only a valid parameter name is specified, display that tuning parameter. This command was first introduced in TinyMUCK 2.2fb5.10. See Appendix G for a description of tuneable parameters. @UNBLESS [*6+] @unbless =. Unbless the specified property / properties of the specified object, which may be given as 'here' or 'me'. This command was first introduced in TinyMUCK 2.2fb6.00b1. See @BLESS. @UNLINK @unlink . Remove all the destination fields from an object the invoker controls, which may be given as 'here' or 'me'; the invoker needs to control the destinations as well for this to succeed. Unlinking a room removes its dropto. Unlinking a player resets that player's home to player_start. Unlinking a thing resets that thing's home to its owner. Unlinking an exit removes the exit's target; the invoker gains link_cost pennies for this, and if the exit has a priority level, it's reset to 0. This command is wrongly listed as a BUILDER command in the TinyMUCK Command Dictionary. See @LINK, @RELINK. See Appendix G for a description of tuneable parameters. @UNLOCK @unlock . Remove the lock from the specified object the invoker controls. See @LOCK. @UNCOMPILE [*] @uncompile. Uncompile all MUF programs in the database. As a side effect, this stops all running processes as if a '@kill all' was issued. This command was first introduced in TinyMUCK 2.2fb4.0. @USAGE [*~] @usage. Print out information about the server. Only available if the server was not compiled with NO_USAGE_COMMAND. If the server was compiled with HAVE_GETRUSAGE, additional info about the server's resource usage will be displayed. This command was first introduced in TinyMUCK 2.2fb3.7. @VERSION @version. Print the server version currently in use. This command was first introduced in TinyMUCK 2.2fb4.4. In TinyMUCK versions starting with 2.2fb6.04, this command also displays the compile time and whether the MUCK server is a DEBUG build or not. @WALL [*+U] @wall . Shout a message to every player currently connected. DISEMBARK disembark. Synonym for LEAVE. DROP drop [=] . Drop an object, put an object inside a container or give an object to a player. If the optional container argument is not specified, it defaults to the current room. Only rooms, players and things can be dropped to; players and things are subject to container locking. If a object with a set STICKY flag is dropped to a room, it goes to its home instead. Otherwise, if the room has a dropto but no STICKY flag, the object will go to the dropto; if the room's dropto and STICKY flags are both set, the object will go into the room first, and only go to the dropto once all players have left the room. If neither the room's dropto nor its STICKY flag are set, the object will simply go into the room. Dropping an object counts as using the object, and will trigger its @drop and @odrop messages; if its new location is a room, that room's @drop and @odrop messages will be triggered as well. See @DROP, @ODROP. EXAMINE examine [=]. Examine an object, which may be given as 'me' or 'here'. If the object in question is not a player and can be linked (not linked to!) by the invoker, all relevant information about it will be displayed; if the optional propdir is specified (which is interpreted as an smatch pattern), the matching properties will be listed. If the invoker cannot link the target object, only its owner will be displayed. If the target object is a player, an appropriate message will be given for non-wizards. See Appendix I for a description of smatch patterns. GET get [=] . Attempt to pick up an object; this counts as an attempt to use the object, so locks apply and success/fail messages are triggered. If the optional container argument is specified, attempt to retrieve the object from that container. It is not possible to steal things from players this way. Puppets cannot pick up things their controller doesn't own unless they're in a room. Wizards are able to pick up things no matter where they are. This command is usually overriden by a more sophisticated get program. See @FAIL, @LOCK, @OFAIL, @OSUCCESS, @SUCCESS. GIVE give =. Give the specified number of pennies to a player, who may be given as 'me'. Non-wizards must specify positive amounts of pennies, cannot give more pennies than they have themselves, can only give pennies to players and cannot give pennies to a player if it would bring him above max_pennies pennies. A wizard's penny-count is not reduced by using this command. See Appendix G for a description of tuneable parameters. GOTO goto . Attempt to use the specified exit. The command itself may be ommited. If the allow_home @tune option is set, the invoker can use 'home' as a destination to go to their home; all their possessions will go to their respective homes as well. Most MUCKs provide a 'gohome' command as an alternative which does not have this side effect. See Appendix G for a description of tuneable parameters. GRIPE gripe . Send a complaint to the wizards and log the complaint in the game's gripelog (see Appendix H). HELP help [ []]. Display the given help page. If no topic is specified, display the default help page. The subtopic argument was first introduced in TinyMUCK 2.2fb3.6. Help subtopic files must be located in the HELP_DIR directory (see Appendix H). INVENTORY inventory. Displays a list of the objects the invoker is carrying, as well as the amount of pennies they possess. See SCORE. INFO info [ [=[-]]. Display the given info file. If no file is specified, display the list of available info files in the INFO_DIR directory (see Appendix H). If no fromline is given, display the entire file. If no toline is given, display only the specified line; otherwise, display the specified range of lines. Support for the specification of line ranges to be displayed was added in TinyMUCK 2.2fb4.2. KILL kill [= ]. Attempt to kill the specified player, who may be given as 'me'; the chance for this is ( / kill_base_cost). Cost has to be at least kill_min_cost pennies. Wizards do not lose pennies when using this command. It is not possible to kill wizards, and killing can not be done in rooms that have their HAVEN flag set. If the restrict_kill @tune option is set, both the invoker and the victim have to be set KILL_OK in order for this command to be able to succeed. If the victim has less than max_pennies pennies, they will receive kill_bonus pennies upon a successful kill. Kills are not subject to locks, but will trigger @drop and @odrop messages. Killing a player sends him and all his possessions to their respective homes, but does not have any other effect. See @DROP, @ODROP. See Appendix G for a description of tuneable parameters. LEAVE leave. Leave a vehicle. It is not possible to leave a vehicle that's not currently in a room. LOOK look [ [= ]]. Look at an object, which may be given as 'here' or 'me'. If no object is specified, the current room is assumed. If a detail is given, the specified detail is looked for on the object and displayed. Otherwise, if a room is specified as an object, the player must be inside the room and be able to link to it; if a player is specified, that player must either be in the same room or under the control of the looking player; and if a thing is specified, it must either be in the same room, carried by the player or under the control of the player to be looked at. If the object looked at is a room, its name, description, @succ/@fail message and contents will be displayed; if it is a player, its description and inventory will be displayed, and if it is a thing, only its description will be displayed. This command is usually overridden by a more advanced look program, like Keet's 5Senses. MAN man [ []]. Display the given manual page. If no topic is specified, display the default manual page. The subtopic argument was first introduced in TinyMUCK 2.2fb3.6. Manual subtopic files must be located in the MAN_DIR directory (see Appendix H). MOTD [(*)] motd [|clear]. Display the message of the day. Wizards may optionally specify a message of the day that will be appended to the current motd file, or clear the message of the day file by specifying the 'clear' argument. Both actions will be logged. MOVE move . Synonym for GOTO. MPI mpi [ []]. Display the given MPI help page. If no topic is specified, display the default MPI help page. MPI subtopic files must be located in the MPI_DIR directory (see Appendix H). NEWS news [ []]. Display the given news page. If no topic is specified, display the default news page. The subtopic argument was first introduced in TinyMUCK 2.2fb3.6. News subtopic files must be located in the NEWS_DIR directory (see Appendix H). OUTPUTPREFIX [UC] OUTPUTPREFIX . This will cause the given string to be printed before the output of every command. The name of this command can be #define'd at compile time. OUTPUTSUFFIX [UC] OUTPUTSUFFIX . This will cause the given string to be printed after the output of every command. The name of this command can be #define'd at compile time. PAGE page [=]. Send a message to a target player. If the receiving player has their HAVEN bit set, the message will not be sent; rather, the player will be notified of the invoker's page attempt, and the invoker will receive a notice that they do not wish to be disturbed. If no message is specified, a message that the invoker is searching for the target player is sent. Paging a player will not reveal the invoker's location to them, and costs lookup_cost pennies. This command is usually overridden by a more advanced page program like Foxen's MUFpage. See POSE, SAY, WHISPER. See Appendix G for a description of tuneable parameters. POSE pose . Pose something; the invoker's name is automatically appended at the beginning of the pose. This command can be abbreviated to ':'; the token used can be #define'd at compile time. See PAGE, SAY, WHISPER. PUT put [=] . Synonym for DROP. This command is usually overriden by a more sophisticated put program. QUIT [UC] QUIT. Logout from the game. The name of this command can be #define'd at compile time. READ read [ [= ]]. Synonym for LOOK. This command is usually overriden by a more sophisticated read program. ROB rob . Try to rob a penny from the specified player, who may be given as 'me'. Unless the invoker is a wizard, the player must be in the same location. The command will fail if the target player does not have any pennies. Robbing a player counts as an attempt to use that player, so locks, success and failure messages apply. Zombies owned by non-wizards cannot use this command. See @FAIL, @LOCK, @OFAIL, @OSUCCESS, @SUCCESS. SAY say . Say something, delivering the message to all listeners in the current location. This command can be abbreviated to '"'; the token used can be #define'd at compile time. This is usually overriden by a more advanced say program. See PAGE, POSE, WHISPER. SCORE score. Displays the amount of pennies in the invoker's possession. See INVENTORY. TAKE take [=] . Synonym for GET. THROW throw [=] . Synonym for DROP. This command is usually overriden by a more sophisticated throw program. WHISPER whisper =. Whisper a message to a given player, who may be given as 'me' and must be in the same room if the invoker is not a wizard player. This command is usually overriden by a more sophisticated whisper program like Tygryss's MUFwhisper. See PAGE, POSE, SAY. WHO [UC] WHO []. List the names of players logged in and their idle times. If match is specified, only names that match it will be displayed. The name of this command can be #define'd at compile time. For wizards, the dbref# of the player, the dbref# of their location and their IP address is also reported. If the use_hostnames @tune option is set, IP addresses are converted into hostnames using gethostbyaddr(3). This command is usually overridden by a more sophisticated WHO program like Calico's WHO-Suite. See Appendix G for a description of tuneable parameters. Appendix A: Valid Names A valid name must adhere to the following rules: * it must be at least one character long. * it must not start with either '*', '$' or '#'. * it must not contain '=', '&', '|', '\r' or 0x1B. * it must not contain '!' after a whitespace * it must not be 'me', 'home' or 'here'. A valid player name must adhere to the following rules: * it must be a valid name according to the rules above. * it must not match an existing player's name. * it must not contain whitespaces. * it must not contain '(' or ')'. * it must not contain any unprintable characters (according to isprint(3C)). A valid password must adhere to the following rules: * it must not contain any whitespaces. * it must not contain any unprintable characters (according to isprint(3C)). It is also noteworthy that while a valid password may contain '=' characters, including those renders it unchangeable by means of @PASSWORD. The @NEWPASSWORD command will still work. Appendix B: Flags The following flags can be used for @CONTENTS, @ENTRANCES, @FIND and @OWNED: * Object types: R: display rooms only. T: display things only. E: display exits only. P: display players only. F: display programs only. * Special objects: U: display unlinked objects only (introduced in TinyMUCK 2.2fb4.2). @: display old objects only. * Priority / MUCKER levels: 0, 1, 2, 3: display objects with the specified level only. M: display objects of positive level only. * Regular (object) flags: A: display ABODE objects only. B: display BUILDER objects only. C: display CHOWN_OK objects only. D: display DARK objects only. H: display HAVEN objects only. J: display JUMP_OK objects only. K: display KILL_OK objects only. L: display LINK_OK objects only. Q: display QUELL objects only. S: display STICKY objects only. V: display VEHICLE objects only. W: display WIZARD objects only. X: display XFORCIBLE objects only (added in TinyMUCK 2.2fb5.27). Z: display ZOMBIE objects only. * Object sizes (added in TinyMUCK 2.2fb5.32): ~: display objects with at least the specified size (in bytes) only. ^: display objects with at least the specified loaded size (in bytes) only. Flags can be combined; from TinyMUCK 2.2fb3.7 (TinyMUCK 2.2fb3.5 for @find and @owned) on, flags can be negated with '!'. The ^ flag is only available to wizards; when it is used, all objects that are checked will be loaded into memory to make the check, potentially causing the command to take a while to complete. ^ and ~, if present, have to be specified last. Unlike in other TinyMUCK branches, the I flag cannot be used. Also, the internally-used N and R flags cannot be used. See Appendix J for a detailed description of object flags. Appendix C: Output types The following output types can be used for @CONTENTS, @ENTRANCES, @FIND and @OWNED: * Additional info: owners: also list the objects' owners. locations: also list the objects' locations. links: also list the objects' links. size: also list the objects' sizes (in bytes) (added in TinyMUCK 2.2fb5.32). * Supressed info: count: only list the total count of objects. Appendix D: Keystrings Keystrings are defined by the following grammar: key -> 'me' | 'here' | player | dbref | property | '!' key | key '|' key | key '&' key | '(' key ')' player -> '*' playername dbref -> '#' number property -> propertyname ':' value The dbref token requires the item with the specified dbref number; the player token requires the player with the specified name (this is internally converted to require the player's dbref number instead, and costs lookup_cost pennies for non-wizards), and the property token requires the property with the specified name on the locked object to evaluate to the specified value when the lock is checked. '!' negates an expression, '|' requires either expression to be true, and '&' requires both expressions to be true when the lock is checked. Parentheses can be used to avoid ambiguities. Appendix E: Property types Properties are considered to be of a certain type if any their own name or the name of any property directory they are in starts with a special character. The following property types are known: * Hidden. Special character: '@'. Hidden properties can only be set or read or by blessed MPI, wizards, or wizard-level MUF and can only be blessed by wizards (other properties can be blessed by MUF of at level 3 as well). Hidden properties were introduced in TinyMUCK 2.2fb2.2; the above may only apply to fuzzball versions >= TinyMUCK 2.2fb3.6. * See-only. Special character: '~'. See-only properties can only be set by blessed MPI, wizards, or wizard-level MUF. See-only properties were introduced in TinyMUCK 2.2fb2.2; the above may only apply to fuzzball versions >= TinyMUCK 2.2fb3.6. * Private. Special character: '.'. Private properties can only by read or set by blessed MPI, MPI executed by the owner of the property's object, the owner of the property's object, MUF of at least level 3 or MUF executed by the property's object's owner. If the property's object is an unlinked exit, any MUF program may set it. * Readonly. Special characters: '_' and '%'. Readonly properties can only be set by blessed MPI or MPI executed by the owner of the property's object, the property's object's owner, MUF of at least level 3 or MUF executed by the property's object's owner. If the property's object is an unlinked exit, any MUF program may set it. The exception to this is the _msgmacs/ property directory, which can never be set by non-blessed MPI or non-wizard-level MUF. Appendix F: Interactive Sanity DB editor commands The following commands are available in the Interactive Sanity DB editor, which can be invoked by specifying '-insanity' on the server command line: C c . Change a field on an object. This command is equivalent to @SANCHANCE. F f. Attempt to automatically fix the database. This command is equivalent to @SANFIX. H h. Display the help screen. P p . Print an object. This command is equivalent to @EXAMINE. Q q. Quit the Interactive Sanity DB editor. S. s. Run sanity checks on the database. This command is equivalent to @SANITY. W w . Write the current database to the the specified file. X x []. Extract all non-garbage objects belonging to from the database. If the optional filename is specified, the objects will be written to that file; otherwise, stdout is used. Y y []. Extract the specified object from the database, unless it's garbage. If the optional filename is specified, the objects will be written to that file; otherwise, stdout is used. Appendix G: @tune parameters The following parameters can be modified at runtime using the @TUNE command or the SETSYSPARM MUF primitive. Parameters that are marked with 'restr.' can only be read or written by MUF with wizardly permissions. Parameters that are marked with 'fb6' are new in TinyMUCK 2.2fb6. As of TinyMUCK 2.2fb6, parameters are grouped. * Commands: (str) autolook_cmd Room entry look command (fb6) The default command executed when a room is entered. If not set, 'look' is used. Default value: AUTOLOOK_CMD, which has a default value of 'look'. In TinyMUCK 2.2fb5 and TinyMUCK 2.2fb6 prior to TinyMUCK 2.2fb6.00a27, 'look' is always used. First introduced in TinyMUCK 2.2fb6.00a27. (bool) enable_home Enable 'home' command (fb6, restr.) If this option is set to no, the global in-server 'home' command will cease to work. Default value: ENABLE_HOME, which has a default value of yes. First introduced in TinyMUCK 2.2fb6.00a22. (bool) enable_prefix Enable prefix actions (fb6, restr.) If this option is set to yes, prefix actions as described under @ACTION will be allowed by the server. Default value: ENABLE_PREFIX, which has a default value of no. First introduced in TinyMUCK 2.2fb6.00a22. (bool) verbose_clone Verbose @clone command (fb6, restr.) If this option is set to yes, the @clone command will list the names of all properties as they are copied to the new object if the cloning player is a wizard. Default value: VERBOSE_CLONE, which has a default value of no. First introduced in TinyMUCK 2.2fb6.00rc7. See @CLONE. * Costs: (int) exit_cost Cost to create an exit The amount of pennies a non-wizard player has to pay to create an exit. Default value: EXIT_COST, which has a default value of 1. See @ACTION, @OPEN. (int) link_cost Cost to link an exit The amount of pennies a non-wizard player has to pay to link an exit. Default value: LINK_COST, which has a default value of 1. See @LINK, @OPEN, @UNLINK. (int) lookup_cost Cost to do database lookups The amount of pennies a non-wizard player has to pay to use the @FIND, @OWNED or PAGE commands or to match a player name using the '*Name' syntax. Default value: LOOKUP_COST, which has a default value of 0. See @FIND, @OWNED, PAGE. Also see Appendix D. (int) max_object_endowment Maximum value of a thing The maximum value (in pennies) a thing can have. Default value: MAX_OBJECT_ENDOWMENT, which has a default value of 100. See @CREATE. (int) object_cost Cost to create a thing The minimum amount of pennies a non-wizard player has to pay to create an thing. Default value: OBJECT_COST, which has a default value of 10. See @CREATE. (int) room_cost Cost to create a room The amount of pennies a non-wizard player has to pay to create a room. Default value: ROOM_COST, which has a default value of 10. See @DIG. * Currency: (str) cpennies Currency name, capitalized, plural The name of the MUCK's currency, plural, capitalized. Default value: CPENNIES, which has a default value of 'Pennies'. (str) cpenny Currency name, capitalized The name of the MUCK's currency, capitalized. Default value: CPENNY, which has a default value of 'Penny'. (int) max_pennies Maximum number of currency allowed The maximum number of pennies a non-wizard player can possess. Default value: MAX_PENNIES, which has a default value of 10000. (str) pennies Currency name, plural The name of the MUCK's currency, plural. Default value: PENNIES, which has a default value of 'pennies'. (str) penny Currency name The name of the MUCK's currency. Default value: PENNY, which has a default value of 'penny'. (int) penny_rate Average moves between finding currency The average number of steps a player has to take to find another penny. If set to 0, players will never find pennies. Default value: PENNY_RATE, which has a default value of 8. (int) start_pennies Player starting currency count The number of pennies a new player will start with. Default value: START_PENNIES, which has a default value of 50. * Dark: (bool) dark_sleepers Make sleeping players dark If this option is set to yes, sleeping players will effectively be treated as if set DARK. Default value: DARK_SLEEPERS, which has a default value of no. (bool) exit_darking Allow setting exits dark If this option is set to yes, non-wizard players are allowed to set the DARK flag on exits. Default value: EXIT_DARKING, which has a default value of yes. See @SET. (bool) thing_darking Allow setting things dark If this option is set to yes, non-wizard players are allowed to set the DARK flag on things. Default value: THING_DARKING, which has a default value of yes. (bool) who_hides_dark Hide dark players from WHO list (restr.) If this option is set to yes, DARK players will not show up in the WHO listing, in addition to not being visible in rooms' content lists. Default value: WHO_HIDES_DARK, which has a default value of yes. * Database: (time) aging_time When to consider an object old and unused This option specifies the time an object has to be unused to be regarded "old and unused". Default value: AGING_TIME, which has a default value of 90 days. See @CONTENTS, @ENTRANCES, @FIND, @OWNED, @STATS. Also see Appendix B. (bool) compatible_priorities Use legacy exit priority levels If this option is set to yes, exits that aren't on (?) things will always act as if they have at least a priority level of 1. Default value: COMPATIBLE_PRIORITIES, which has a default value of yes. (ref) default_room_parent Default parent for new rooms (fb6) This is the dbref number of the room that will be used as a default parent for new rooms. Default value: GLOBAL_ENVIRONMENT, which has a default value of #0. In TinyMUCK 2.2fb5 and TinyMUCK 2.2fb6 versions prior to TinyMUCK 2.2fb6.00b5, GLOBAL_ENVIRONMENT is always used. First introduced in TinyMUCK 2.2fb6.00b5. See @DIG. (str) pcreate_flags Initial Player Flags (fb6) This option specifies the default flags new players are created with. Default value: PCREATE_FLAGS, which has a default value of "B". First introduced in TinyMUCK 2.2fb6.00rc7. (ref) player_start Place where new players start This is the dbref number of the room where new players will begin their life. Default value: PLAYER_START, which has a default value of #0. (bool) realms_control Enable Realms control If this option is set to yes, anything under the environment of a room with a set WIZARD flag will also be controlled by the owner of that room. Default value: REALMS_CONTROL, which has a default value of no. (str) reserved_names Reserved names smatch (fb6) This option specifies an smatch pattern which is used to determine which names may not be used for the creation or renaming of objects; any names matching this pattern will not be accepted. Default value: RESERVED_NAMES, which has a default value of "". First introduced in TinyMUCK 2.2fb6.00rc7. See Appendix I for a description of smatch patterns. (str) reserved_player_names Reserved player names smatch (fb6) This option specifies an smatch pattern which is used to determine which names may not be used for the creation or renaming of players; any names matching this pattern will not be accepted. Default value: RESERVED_PLAYER_NAMES, which has a default value of "". First introduced in TinyMUCK 2.2fb6.00rc7. See Appendix I for a description of smatch patterns. * DB Dumps: (bool) dbdump_warning Enable warning message for full dumps If this option is set to yes, a warning message will be displayed prior to a full database dump. Default value: DBDUMP_WARNING, which has a default value of 1. See @DUMP. In fb6, first introduced in TinyMUCK 2.2fb6.00rc7. (bool) deltadump_warning Enable warning message for delta dumps If this option is set to yes and dbdump_warning is also set to yes, a warning message will be displayed prior to delta dumps. Default value: DELTADUMP_WARNING, which has a default value of 'yes'. See @DLT. (str) deltawarn_mesg Delta dump warning message The warning message used to announce delta dumps. Default value: DELTAWARN_MESG, which has a default value of '## Game will pause to save changed objects in a few minutes. ##'. See @DLT. (bool) diskbase_propvals Enable prop value diskbasing If this option is set to yes, diskbasing of property will be allowed. Default value: DISKBASE_PROPVALS, which has a default value of yes. Changing this option requires a @RESTART of the game. First introduced in TinyMUCK 2.2fb5.27. (time) dump_interval Interval between delta dumps The maximum time allowed between two dumps or delta dumps. Default value: DUMP_INTERVAL, which has a default value of 4 hours. See @DLT, @DUMP. (time) dump_warntime Interval between warning and dump The time between the message announcing a dump or delta dump and the actual dump. Default value: DUMP_WARNTIME, which has a default value of 2 minutes. See @DUMP, @DLT. (str) dumpdeltas_mesg Delta dump start message The message displayed when a delta dump starts. Default value: DUMPDELTAS_MESG, which has a default value of '## Saving changed objects ##'. See @DLT. (str) dumpdone_mesg Dump completion message The message displayed after a dump or delta dump finishes. Default value: DUMPDONE_MESG, which has a default value of '## Save complete. ##'. See @DLT, @DUMP. (str) dumping_mesg Full dump start message The message displayed when a full database dump starts. Default value: DUMPING_MESG, which has a default value of '## Pausing to save database. This may take a while. ##'. See @DUMP. (str) dumpwarn_mesg Full dump warning message The message used to announce a full database dump. Default value: DUMPWARN_MESG, which has a default value of '## Game will pause to save the database in a few minutes. ##'. See @DUMP. (time) monolithic_interval Interval between full dumps The maximum time allowed between two full database dumps. Default value: MONOLITHIC_INTERVAL, which has a default value of 1 day. See @DUMP. * Idle Boot: (str) idle_boot_mesg Boot mesage for idling out The message displayed to a player when they are idle-booted. Default value: IDLEBOOT_MESSAGE, which has a default value of "Autodisconnecting for inactivity." First introduced in TinyMUCK 2.2fb5.47. (bool) idleboot Enable booting of idle players If this option is set to yes, non-wizard players idle for a longer time than that specified by maxidle will be booted automatically. Default value: IDLEBOOT, which has a default value of yes. First introduced in TinyMUCK 2.2fb5.47. (time) maxidle Maximum idle time before booting The maximum time a player is allowed to idle before being considered for being idle-booted. Default value: MAXIDLE, which has a default value of 2 hours. First introduced in TinyMUCK 2.2fb5.47. * Killing: (int) kill_base_cost Cost to guarantee kill The number of pennies that need to be used to guarantee success when killing a player. Default value: KILL_BASE_COST, which has a default value of 100. (int) kill_bonus Bonus for killed player The number of pennies a successfully killed player receives, provided they own less than max_pennies pennies. Default value: KILL_BONUS, which has a default value of 50. (int) kill_min_cost Minimum cost to kill a player The minimum number of pennies that need to be used to attempt to kill a player. Default value: KILL_MIN_COST, which has a default value of 10. (bool) restrict_kill Restrict kill command to KILL_OK players If this option is set to yes, only players whose KILL_OK flag is set may attempt to kill other players, and only players whose KILL_OK flag is set may be the target of killing attempts. Default value: RESTRICT_KILL, which has a default value of yes. * Listeners: (bool) allow_listeners Enable programs to listen to player output If this option is set to yes, programs are allowed to listen to output generated by player actions. Default value: LISTENERS, which has a default value of yes. (bool) allow_listeners_env Allow listeners down environment If both this option and allow_listeners are set to yes, listeners will also be searched for down the environment. Default value: LISTENERS_ENV, which has a default value of yes. (bool) allow_listeners_obj Allow listeners on things If both this option and allow_listeners are set to yes, listeners will also be searched for on nearby things. Default value: LISTENERS_OBJ, which has a default value of yes. (int) listen_mlev MUCKER level required for listener programs This option specifies the minimum MUCKER level a program has to have to be able to act as a listener. Default value: LISTEN_MLEV, which has a default value of 3. * Logging: (int) cmd_log_threshold_msec Log commands taking >X msec (fb6) This option specifies the time (in milliseconds) that commands may take to complete before being logged to the command times log (see Appendix H). Default value: CMD_LOG_THRESHOLD_MSEC, which has a default value of 1000. First introduced in TinyMUCK 2.2fb6.00a33. (bool) log_commands Log player commands (restr.) If this option is set to yes, all player commands entered will be logged to the commands log (see Appendix H). Default value: LOG_COMMANDS, which has a default value of yes. (bool) log_failed_commands Log unrecognized commands (restr.) If this option is set to yes, all bad commands will be logged to the status log (see Appendix H). Default value: LOG_FAILED_COMMANDS, which has a default value of no. (bool) log_interactive Log text sent to MUF (restr.) If this option is set to yes, all commands entered in read or interactive mode (i.e., in foreground programs) will be logged to the command log (see Appendix H). Default value: LOG_INTERACTIVE, which has a default value of yes. First introduced in TinyMUCK 2.2fb5.67 and TinyMUCK 2.2fb6.00a22; in TinyMUCK 2.2fb6 versions prior to TinyMUCK 2.2fb6.00a34, this option was called log_reads. (bool) log_programs Log programs whenever they are saved (restr.) If this option is set to yes, the text of all changed programs will be logged to the program log (see Appendix H) when they are saved. This is useful for finding people who upload scanners, use them and recycle them immediately to escape detection. Default value: LOG_PROGRAMS, which has a default value of yes. * Misc: (bool) allow_zombies Enable ZOMBIE objects to relay what they hear If this option is set to yes, objects set ZOMBIE relay what they hear back to their owners, and @FORCE can be used on them. Default value: ZOMBIES, which has a default value of yes. (str) huh_mesg Command unrecognized warning The message displayed when a player enters a line the server does not understand. Default value: HUH_MESSAGE, which has a default value of 'Huh? (Type "help" for help.)'. First introduced in TinyMUCK 2.2fb5.32. (bool) ignore_bidirectional Enable bidirectional @ignore (fb6) If this option is set to yes, players will not get messages from players @ignoring them. Default value: IGNORE_BIDIRECTIONAL, which has a default value of 1. First introduced in TinyMUCK 2.2fb6.00rc9. (bool) ignore_support Enable support for @ignoring players (fb6) If this option is set to yes, support for ignoring of players via the @ignore command will be enabled. Default value: IGNORE_SUPPORT, which has a default value of yes. First introduced in TinyMUCK 2.2fb6.00rc7. (bool) m3_huh Enable huh? to call an exit named "huh?" and set M3, with full command string (fb6) If this option is set to yes, the server will, if a player enters a line the server does not understand, look for an exit called "HUH?" in the current environment chain and, if found and if the exit is set M3, invoke it with the full command entered by the player as an argument. Default value: M3_HUH, which has a default value of 0. First introduced in TinyMUCK 2.2fb6.06. (str) leave_mesg Logoff message The message displayed when a player logs off from the game. Default valu: LEAVE_MESSAGE, which has a default value of 'Come back later!'. First introduced in TinyMUCK 2.2fb5.32. (str) muckname MUCK name The MUCK's name. Default value: MUCKNAME, which has a default value of 'TygryssMUCK'. (bool) wiz_vehicles Let only wizards set VEHICLE bits on things If this option is set to yes, only wizards are allowed to set the VEHICLE flag on things. Default value: WIZ_VEHICLES, which has a default value of no. * Movement: (bool) secure_teleport Restrict actions to JUMP_OK/controlled rooms If this option is set to yes, players may only use personal actions to teleport out of rooms that they either control or that is set JUMP_OK. Default value: SECURE_TELEPORT, which has a default of no. (bool) secure_thing_movement Moving things act like players (fb6, restr.) If this option is set to yes, moving things always behave like players with regard to triggering movement propqueues. This can vastly increase the amount of processing done, but does allow servers to be able to programmatically track all movement, so people cannot use MPI to force an object past a lock, then set it ZOMBIE or VEHICLE on the other side. Default value: SECURE_THING_MOVEMENT, which has a default value of no. First introduced in TinyMUCK 2.2fb6.00a29. (bool) teleport_to_player Allow teleporting to a player If this option is set to yes, players may be used as destinations for exits. Default value: TELEPORT_TO_PLAYER, which has a default value of yes. * MPI: (bool) do_mpi_parsing Enable parsing of messages for MPI If this option is set to true, messages are run through the MPI parser before being displayed. Default value: DO_MPI_PARSING, which has a default value of yes. (bool) lazy_mpi_istype_perm Enable loose legacy perms for {istype} (fb6) If this option is set to true, permission checking for the {istype} MPI command will be reverted to the lazy, pre-TinyMUCK 2.2fb5.56 method, allowing {istype} to reference remote objects. Default value: LAZY_MPI_ISTYPE_PERM, which has a default value of no. First introduced in TinyMUCK 2.2fb6.00b4. (int) mpi_max_commands Maximum MPI instruction run length This option specifies the maximum number of MPI commands that may be run uninterruptedly. Default value: MPI_MAX_COMMANDS, which has a default value of 2048. First introduced in TinyMUCK 2.2fb5.12. * MUF: (int) addpennies_muf_mlev MUCKER level required to create/ destroy pennies (fb6) This option specifies the MUCKER level a MUF program needs to be of to be able to use the ADDPENNIES MUF primitive. Default value: ADDPENNIES_MUF_MLEV, which has a default value of 2. First introduced in TinyMUCK 2.2fb6.02. (bool) expanded_debug_trace MUF debug trace shows array contents (fb6) If this option is set to yes, array contents will be shown in MUF debug traces. Default value: EXPANDED_DEBUG_TRACE, which has a default value of yes. First introduced in TinyMUCK 2.2fb6.00a30. (bool) force_mlev1_name_notify MUF notify prepends username at ML1 If this option is set to yes, all notifys made by MUF programs of MUCKER level 1, other than those to the using player, will be prepended with the using player's name. Default value: FORCE_MLEV1_NAME_NOTIFY, which has a default vaue of yes. (int) instr_slice Instructions run per timeslice This option specifies the number of instructions a MUF program can run before a context switch to the next waiting MUF program is forced by the multitasking interpreter. Default value: INSTR_SLICE, which has a default value of 2000. (int) max_instr_count Running MUF instruction count limit This option specifies an upper limit for the maximum number of instructions a MUF program may use. Non-wizard MUF programs may use at most this number of instructions in preempt mode; in multitasking mode, programs of MUCKER level 1 may at most use this number of instructions, programs of MUCKER level 2 may at most use four times this number of instructions, and programs of MUCKER level 3 or greater are not subject to any limit. Default: MAX_INSTR_COUNT, which has a default of 20000. (int) max_ml4_preempt_count Maximum MUF preempt instruction run length for ML4 (fb6) This option specifies an upper limit for the maximum a MUF program running at MUCKER level 4 (wizard) may use before it is aborted; if 0, no limit is imposed. Default value: MAX_ML4_PREEMPT_COUNT, which has a default value of 0. First introduced in TinyMUCK 2.2fb6.00rc7. (int) max_plyr_processes Maximum concurrent processes per player This option specifies the maximum number of processes any given player may have in the timequeue at any time. Default value: MAX_PLYR_PROCESSES, which has a default value of 32. (int) max_process_limit Maximum concurrent processes on system This option specifies the maximum number of processes that are allowed in the timequeue at the same time. Default value: MAX_PROCESS_LIMIT, which has a default value of 400. (int) mcp_muf_mlev MUCKER level required to use MCP (fb6) This option specifies the MUCKER level a MUF program needs to be of to be able to make MCP and MCP-GUI calls. Default value: MCP_MUF_MLEV, which has a default value of 3. First introduced in TinyMUCK 2.2fb6.00b4. (int) movepennies_muf_mlev MUCKER level required to move pennies non-destructively (fb6) This option specifies the MUCKER level a MUF program needs to be of to be able to use the MOVEPENNIES MUF primitive. Default value: MOVEPENNIES_MUF_MLEV, which has a default value of 2. First introduced in TinyMUCK 2.2fb6.02. (bool) muf_comments_strict MUF comments are strict and not recursive (fb6) If this option is set to yes, the MUF parser will not accept MUF programs that contain recursive comments. This option can be overridden in MUF programs by a MUF pragma. Default value: MUF_COMMENTS_STRICT, which has a default value of 1. First introduced in TinyMUCK 2.2fb6.01. (bool) optimize_muf Enable MUF bytecode optimizer (fb6) If this option is set to yes, the MUF compiler is allowed to perform bytecode optimization on compiled MUF programs. Default value: OPTIMIZE_MUF, which has a default value of yes. First introduced in TinyMUCK 2.2fb6.00rc4. (int) pennies_muf_mlev MUCKER level required to read the value of pennies (fb6) This option specifies the MUCKER level a MUF program needs to be of to be able to use the PENNIES MUF primitive. If set to greater than 1, the {money:} MPI function disabled as well. Default value: PENNIES_MUF_MLEV, which has a default value of 1. First introduced in TinyMUCK 2.2fb6.02. (int) process_timer_limit Maximum timers per process (fb6) This option specifies the maximum number of timers a MUF program may use concurrently at any given time. Default value: PROCESS_TIMER_LIMIT, which has a default value of 4. First introduced in TinyMUCK 2.2fb6.00a30. (int) userlog_mlev Mucker Level required to write to userlog (fb6) This option specifies the MUCKER level a program needs to have to be able to log user-specific messages to the user log file using the USERLOG prim. Default value: USERLOG_MLEV, which has a default value of 3. First introduced in TinyMUCK 2.2fb6.00rc7. * Player Max: (bool) playermax Limit number of concurrent players allowed If this option is set to yes, the number of player connections allowed concurrently will be limited to playermax_limit. Wizards are not affected by this setting. Default value: PLAYERMAX, which has a default value of no. First introduced in TinyMUCK 2.2fb5.47. (str) playermax_bootmesg Maximum players boot message The message displayed to players when a connect to their character is not allowed because the maximum number of player connections is exceeded. Default value: PLAYERMAX_BOOTMESG, which has a default value of 'Sorry, but there are too many players online. Please try reconnecting in a few minutes.' First introduced in TinyMUCK 2.2fb5.47. (int) playermax_limit Maximum player connections allowed The maximum number of concurrent non-wizard player connections allowed when playermax is set to yes. Default value: PLAYERMAX_LIMIT, which has a default value of 56. First introduced in TinyMUCK 2.2fb5.47. (str) playermax_warnmesg Maximum players login warning The message displayed to players when at the welcome screen when the maximum number of player connections is exceeded. Default value: PLAYERMAX_WARNMESG, which has a default value of 'You likely won't be able to connect right now, since too many players are online.' First introduced in TinyMUCK 2.2fb5.47. * Properties: (bool) lock_envcheck Locks check environment for properties If this option is set to yes, locks checking for properties will also look down the environment of the object checked. Default value: LOCK_ENVCHECK, which has a default value of no. First introduced in TinyMUCK 2.2fb5.25. (bool) look_propqueues Trigger _look/ propqueues when player looks If this option is set to yes, _look/ propqueues may be triggered when an object is looked at. Default value: LOOK_PROPQUEUES, which has a default value of no. First introduced in TinyMUCK 2.2fb5.22. (str) proplist_counter_fmt Proplist counter name format (fb6) This option specifies the system standard format for the name of the property that a proplist's count of items is stored in. Any instance of P in this string will be replaced with the proplist's name; any other character will be taken literally. Default value: PROPLIST_COUNTER_FORMAT, which has a default value of "P#". First introduced in TinyMUCK 2.2fb6.00a30. (str) proplist_entry_fmt Proplist entry name format (fb6) This option specifies the system standard naming format for proplists. And instance of 'P' in this string will be replaced by the proplist's name, and any instance of 'N' will be replaced by the item's number; all other characters will be taken literally. Default value: PROPLIST_ENTRY_FORMAT, which has a default value of "P#/N". First introduced in TinyMUCK 2.2fb6.00a30. (bool) proplist_int_counter Proplist counter uses an int property (fb6) If this option is set to yes, integer properties are used for the storage of proplist counters; otherwise, string properties are used. Default value: PROPLIST_INT_COUNTER, which has a default value of yes. First introduced in TinyMUCK 2.2fb6.00a30. * Registration: (str) register_mesg Login registration message This message is displayed to players trying to create a character at the welcome screen when registration has been enabled. Default value: REG_MSG, which has a default value of 'Sorry, you can get a character by e-mailing XXXX@machine.net.address with a charname and password.' First introduced in TinyMUCK 2.2fb5.32. (bool) registration Require new players to register manually If this option is set to yes, on-the-fly character creation at the login screen will be disabled, and new players will have to be created by wizards using @PCREATE. Default value: REGISTRATION, which has a default value of yes. * RWHO: (time) rwho_interval Interval between RWHO server updates This option specifies the interval between WHO list transmissions to the RWHO server. Default value: RWHO_INTERVAL, which has a default value of 4 minutes. This option was removed in TinyMUCK 2.2fb6.06. (str) rwho_passwd RWHO server entry password (restr.) This option specifies the password the game uses to send its WHO listings to the RWHO server. Default value: RWHO_PASSWD, which has a default password of 'potrzebie'. This option was removed in TinyMUCK 2.2fb6.06. (str) rwho_server RWHO server hostname (restr.) This option specifies the RWHO server to use if support_rwho is enabled. Default value: RWHO_SERVER, which has a default value of 'riemann.math.okstate.edu'. This option was removed in TinyMUCK 2.2fb6.06. (bool) support_rwho Enable RWHO server support If this option is set to yes, a WHO listing is sent regularly to the RWHO server specified in rwho_server. Default value: RWHO, which has a default value of no. This option was removed in TinyMUCK 2.2fb6.06. * Spam Limits: (int) command_burst_size Commands before limiter engages Default value: COMMAND_BURST_SIZE, which has a default value of 500. (FIXME: what does this do exactly?) (int) command_time_msec msec per spam limiter time period Default value: COMMAND_TIME_MSEC, which has a default value of 1000. (FIXME: what does this do exactly?) (int) commands_per_time Commands allowed per time period Default value: COMMANDS_PER_TIME, which has a default value of 2. (FIXME: what does this do exactly?) (int) max_output Maximum output buffer size (fb6) This option specifies the maximum amount of queued output (in bytes) before '' are generated. Default value: MAX_OUTPUT, which has a default value of 131071. * SSL: (str) ssl_keyfile_passwd Password for SSL keyfile (fb6, restr.) This option specifies the password for the server's SSL keyfile. Default value: SSL_KEYFILE_PASSWD, which has a default value of ''. (bool) starttls_allow Enable TELNET STARTTLS encryption on plaintext port (fb6) If this option is set to yes, the server will attempt to start SSL connections on unencrypted ports using the STARTTLS telnet command. Default value: STARTTLS_ALLOW, which has a default value of 0. First introduced in TinyMUCK 2.2fb6.04. * Tuning: (time) clean_interval Interval between memory cleanups This option specifies the interval at which compiled but unused programs and proploaded but unused objects are swept from memory. Default value: CLEAN_INTERVAL, which has a default value of 15 minutes. (int) free_frames_pool Size of MUF process frame pool Default value: FREE_FRAMES_POOL, which has a default value of 8. (FIXME: can anyone who actually knows a bit about MUF explain what this really does?) (int) max_delta_objs % of changed objects to force full dump This option specifies the percentage of objects that need to be changed in order to force a full database dump instead of a delta dump. Default value: MAX_DELTA_OBJS, which has a default value of 20. (int) max_loaded_objs Maximum proploaded object percentage This option specifies the maximum percentage of unchanged proploaded objects allowed to be loaded into memory. Default value: MAX_LOADED_OBJS, which has a default value of 5. (int) pause_min Minimum msec to pause between MUF timeslices This option specifies the minimum number of milliseconds the server will pause in select() between player intput/output servicings. Larger numbers slow foreground and background MUF programs, but reduce CPU usage. Default value: PAUSE_MIN, which has a default value of 100. (bool) periodic_program_purge Periodically free unused MUF programs If this option is set to yes, unused MUF programs will be freed periodically (before dumps and disposing of old props). Default value: PERIODIC_PROGRAM_PURGE, which has a default value of yes. * WHO: (bool) use_hostnames Resolve IP addresses into hostnames If this option is set to yes, IP addresses will be resolved into hostnames using gethostbyaddr(3) for logs and the wizard WHO list. Default value: HOSTNAMES, which has a default value of no. (bool) secure_who Disallow WHO from login screen and programs If this option is set to yes, the WHO command cannot be used at the welcome screen or when in interactive mode. Default value: SECURE_WHO, which has a default value of 0. (bool) who_doing Show @doing in WHO lists If this option is set to yes, WHO will report the @doing property of players. Default value: WHO_DOING, which has a default value of yes. First introduced in TinyMUCK 2.2fb5.14. Appendix H: Files The following files are used by the server (filenames can be changed at compile time): * Configuration - PARMFILE_NAME: This is the name of the file used for saving @tune parameters (in addition to saving them in the database). Default: data/parmfile.cfg. - WORDLIST_FILE: This is the name of the wordlist file used by the dictionary-based database compression algorithm ifthe server was built with the COMPRESSION option. A default file is installed with fuzzball; the topwords program can be used to generate a customized wordlist file from a database. Default: 'data/worldlist.txt'. * Dumps - DELTAFILE_NAME: If the name of this file is changed and the supplied restart script is used, the DELTAS variable in that script also needs to be adjusted. - The name of the file the database is read from upon server startup can be specified using the -dbin server option; the default value used by the supplied restart script, which can be changed by changing the DBIN variable therein, is 'data/std-db.db'. - The name of the file the database is saved to during full dumps can be specified using the -dbout server option; the default value used by the supplied restart script, which can be changed by changing the DBOUT variable therein, is 'data/std-db.new'. - If the supplied restart script is used, the name of a file to save the current database as upon a successful restart can be specified by setting the DBOLD variable therein. This defaults to 'data/std-db.old'. * Help directories - HELP_DIR: this is the directory containing the subtopic files for the HELP command, if any. Default: 'data/help'. See HELP. - NEWS_DIR: this is the directory containing the subtopic files for the NEWS command, if any. Default: 'data/news'. See NEWS. - MAN_DIR: this is the directory containing the subtopic files for the MAN command, if any. Default: 'data/man'. See MAN. - MPI_DIR: this is the directory containing the subtopic files for the MPI command, if any. Default: 'data/mpihelp'. See MPI. - INFO_DIR: this is the directory containing the server's information files, which can be read using the INFO command. Default: 'data/info'. See INFO. * Help files - HELP_FILE: This is the file displayed by the 'help' command. Default: 'data/help.txt'. - NEWS_FILE: This is the file displayed by the 'news' command. Default: 'data/news.txt'. - MAN_FILE: This is the file displayed by the 'man' command. Default: 'data/man.txt'. - MPI_FILE: This is the file displayed by the 'mpi' command. Default: 'data/mpi.txt'. - EDITOR_HELP_FILE: This is the file displayed by the 'h' MUF editor command. Default: 'data/edit-help.txt'. * Logs - COMMAND_LOG: this file is used to log player commands if log_commands is set. Default: logs/commands. See the log_commands @tune parameter in Appendix G. - LOG_CMD_TIMES: this file is used to log user commands which take longer than cmd_log_threshold_msec milliseconds to complete. Default: logs/cmd-times. See the cmd_log_threshold_msec @tune parameter in Appendix G. - LOG_CONC: this file is used to log concentrator errors and stats; it is not currently used anymore by fuzzball. Default: logs/concentrator. - LOG_ERR_FILE: if the server was compiled with the DETACH option, messages sent to stderr will be logged in this file. Default: 'logs/fbmuck.err'. - LOG_FILE: if the server was compiled with the DETACH option, messages sent to stdout will be logged in this file. Default: 'logs/fbmuck'. - LOG_GRIPE: this file is used to log gripes sent by players. Default: logs/gripes. See GRIPE. - LOG_MUF: this file is used to log MUF compiler errors and warnings. Default: logs/muf-errors. - LOG_STATUS: this file is used to log system errors and stats; failed command logs also go here if log_failed_commands is enabled. Default: logs/status. - PROGRAM_LOG: this file is used to log saved MUF programs if log_programs is set. Default: logs/commands. See the log_commands @tune parameter in Appendix G. - USER_LOG: this file is used to log messages generated by the USERLOG MUF prim. Default: logs/user. First introduced in TinyMUCK 2.2fb6.00rc7. * Messages - MOTD_FILE: this file is used for storing messages-of-the-day. Default: data/motd.txt. See MOTD. - WELC_FILE: the contents of this file are displayed at the opening screen to users connecting to the server. Default: data/welcome.txt * SSL - SSL_CERT_FILE: this is the file which contains the server's SSL certificate. Default: data/server.pem. - SSL_KEY_FILE: this is the file which contains the server's private SSL key. Default: data/server.pem. * Various - PID_FILE: this is the file which is used to store the server's PID. Default: 'netmuck.pid'. - RESOLVER_PID_FILE: this is the file which is used to store the hostname resolver's PID. Default: 'hostfind.pid'. - LOCKOUT_FILE: this file is not used anymore by fuzzball. Default: 'data/lockout.txt'. - MACRO_FILE: this is the file used for storing MUF macro definitions. Default: 'muf/macros'. Appendix I: smatch patterns The following characters have special meanings in smatch patterns (a mixture of globbing and regular expressions): * matches any number of characters, including zero. ? matches any one character [] matches any one of the characters listed between [ and ]. character ranges can be specified by putting a - between the first and last character of the desired range; a leading ^ can be used to match any one but the specified characters. {} matches any one of the words listed between { and }. words can be separated by putting a | between them, and a leading ^ can be used to match all but the specified words. \ escapes the following special character. Appendix J: Object flags Database objects can have the following flags: * A (ABODE, AUTOSTART, ABATE) A room that is set ABODE is eligible for becoming the parent of a newly-created room when no explicit parent room is specified. See @DIG for details. An exit that is set ABODE (ABATE) has the lowest possible exit priority (below M0). (FIXME: where in the code is this evident?) A program that is set ABODE (AUTOSTART) and is owned by a wizard will be placed in the time queue automatically with a delay of 0 and a string parameter of "Startup" at server startup and after being compiled. Non-wizard players cannot set the AUTOSTART (ABODE) flag on programs. AUTOSTART programs were first introduced in TinyMUCK 2.2fb. The ABODE flag has no effect when set on things or players. * B (BUILDER, BLOCK, BOUND) Becomes BOUND on programs. * C (CHOWN_OK, COLOR) Becomes COLOR on players. * D (DARK, DEBUG) Becomes DEBUG (DEBUGGING) on programs. * H (HAVEN, HARDUID, HIDE) Becomes HARDUID on programs, HIDE on things. * I (INTERACTIVE) * J (JUMP_OK) * K (KILL_OK) * M (MUCKER) * N (NUCKER) * L (LINK_OK) * Q (QUELL) * R * S (STICKY, SILENT, SETUID) Becomes SETUID on programs, SILENT on players. * V (VEHICLE, VIEWABLE) Becomes VIEWABLE on programs. * W (WIZARD) * X (XFORCIBLE, XPRESS) Becomes XPRESS on exit. * Z (ZOMBIE) Also see @set. Appendix K: _sys/ properties All _sys/ properties are set on #0. The following _sys/properties are used by the server: * _sys/dumpinterval The _sys/dumpinterval property contains the maximum number of seconds that were allowed between two database dumps or delta dumps at server startup. It does not change when the dump_interval @tune parameter is adjusted. The _sys/dumpinterval property was first introduced in TinyMUCK 2.2fb5.0. See Appendix G for a description of tunable parameters. * _sys/lastdumptime The _sys/lastdumptime property contains a unix timestamp specifying when the last database dump occured. It is not updated in case of a PANIC dump. It was first introduced in TinyMUCK 2.2fb5.0. * _sys/max_connects The _sys/max_connects property contains the maximum number of players ever simultaneously connected since the last server restart. It was first introduced in TinyMUCK 2.2fb5.47. * _sys/maxpennies The _sys/maxpennies property contains the maximum number of pennies that a player could possess at server startup. It does not change when the max_pennies @tune parameter is adjusted. The _sys/maxpennies property was first introduced in TinyMUCK 2.2fb5.0. See Appendix G for a description of tunable parameters. * _sys/shutdowntime The _sys/shutdowntime property contains a unix timestamp specifying when the server shutdown occured. It is not updated in case of a PANIC dump. The _sys/shutdowntime property was first introduced in TinyMUCK 2.2fb5.0. * _sys/startuptime The _sys/startuptime property contains a unix timestamp specifying when the server startup occured. It was first introduced in TinyMUCK 2.2fb5.0. Appendix L: Database dump formats * Lachesis * Mage * WhiteFire * Foxen * Foxen2 * Foxen3 * Foxen4 * Foxen5 * Foxen6 * Foxen7 * Foxen8 Appendix M: MUF editor commands * a (SHORTSHOW_COMMAND) [ []] a. Show a list of the names of all currently-known macros the names of which are in the lexigraphic interval specified by the prefixstart and prefixend parameters. If prefixend is not given, prefixstart is used instead. If no parameters are given, a and z are used. The name of this command can be changed at compile time; the default name is "a". * c (COMPILE_COMMAND) c. Compile the current program. The name of this command can be changed at compile time; the default name is "a". * d (DELETE_COMMAND) [ []] d. Delete all lines from firstline to lastline in the current program. If lastline is not given, firstline is assumed. If no arguments are given, the current line is deleted. The name of this command can be changed at compile time; the default name is "d". * def def macroname macrodefinition. Define a new global MUF macro and insert it into MACRO_FILE. If a macro with the specificed name already exists, print an error message instead. See Appendix H for a description of files used by the server. * h (EDITOR_HELP_COMMAND) h. Display EDITOR_HELP_FILE. The name of this command can be changed at compile time; the default name is "h". See Appendix H for a description of files used by the server. * i (INSERT_COMMAND) [] i. Enter insert mode. If the optional linenumber argument is given, set the current line to the specified line number. The name of this command can be changed at compile time; the default name is "i". * k (KILL_COMMAND) k. Delete the specified macro from the list of known macros. Only wizard players may use this command. The name of this command can be changed at compile time; the default name is "k". * l (LIST_COMMAND) [ []] l. List all lines from firstline to lastline in the current program. If lastline is not given, firstline is assumed. If no arguments are given, the current line is listed. The name of this command can be changed at compile time; the default name is "l". * n (NUMBER_COMMAND) [0|1] n. Toggle line number display. If the optional argument is specified, set line number display to on or off, respectively. The name of this command can be changed at compile time; the default name is "n". * p (PUBLICS_COMMAND) [] p. Display the list of PUBLIC functions for the program with the specified dbref number. If no number is given, display the list of PUBLIC functions for the current program. The name of this command can be changed at compile time; the default name is "p". * q (QUIT_EDIT_COMMAND) q. Save the current program and quit the editor. If the log_programs @tune option is set, the current program text is logged. The name of this command can be changed at compile time; the default name is "q". See Appendix G for a list of tuneable parameters. * s (SHOW_COMMAND) [ []] s. Show a list of all currently-known macros the names of which are in the lexigraphic interval specified by the prefixstart and prefixend parameters, including owner and definition. If prefixend is not given, prefixstart is used instead. If no parameters are given, a and z are used. The name of this command can be changed at compile time; the default name is "s". * u (UNASSEMBLE_COMMAND) u. Disassemble and display the program's currently-compiled bytecode. The name of this command can be changed at compile time; the default name is "u". * v (VIEW_COMMAND) v. Display the header of the program with the specified dbref number. If the program is not linkable to, an error message is displayed. The name of this command can be changed at compile time; the default name is "v". Appendix N: Server commandline options Appendix O: The standard MUF library Appendix P: MUF pragmas