# This file is part of TeenyMUD II. # Copyright(C) 1993, 1994, 1995 by Jason Downs. # Copyright(C) 1992, Sean Coates. # # TeenyMUD II is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # TeenyMUD II is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file 'COPYING'); if not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. # # VERSION: 2.0.4 @@@@ & summary SUMMARY Welcome to the TeenyMUD II help system! This system is divided into a series of cross-referenced topic entries. Please see either COMMANDS or TOPICS for the major entries available. (Type 'help commands' or 'help topics'.) @@@@ & commands COMMANDS Help is available for the following built in commands: " & : @ATTACH @BOOT @CASE @CHARGE @CHILDREN @CHOWN @CHOWNALL @CLONE @CONFIG @COPY @COST @CREATE @DIG @DUMP @EDIT @EMIT @ENTRANCES @FIND @FORCE @FOREACH @GROUP @HALT @LINK @LOCK @LOCKOUT @MOTD @NAME @NEWPASSWORD @NOTIFY @OPEN @OWNED @PALIAS @PARENT @PASSWORD @PCREATE @PEMIT @POOR @PS @PURGE @QUOTA @RECYCLE @SAVESTTY @SEMAPHORE @SET @SHUTDOWN @STATS @SWEEP @TELEPORT @TOAD @TRACE @TRIGGER @UNLINK @UNLOCK @VERSION @WAIT @WALL @WIPE See COMMANDS2 for the rest of the list. @@@@ & commands2 COMMANDS DROP EMOTE ENTER EXAMINE GIVE GO GRIPE HAND HELP HOME INVENTORY KILL LEAVE LOOK NEWS PAGE POSE QUIT SAY SCORE SESSION STTY TAKE USE WHERE WHISPER WHO See COMMANDS3 for more information. @@@@ & commands3 COMMANDS The following built in attribute alias commands are also available: @ADESCRIBE @ADROP @AEFAIL @AENTER @AFAIL @AFILTER @AKILL @AKILLFAIL @ALEAVE @APAY @APREFIX @ASUCCESS @ATELEPORT @AUSE @DESCRIBE @DROP @EFAIL @ENTER @FAIL @IDESCRIBE @KILL @KILLFAIL @LEAVE @ODESCRIBE @ODROP @OEFAIL @OENTER @OFAIL @OKILL @OKILLFAIL @OLEAVE @OPAY @OSUCCESS @OTELEPORT @OUSE @OXENTER @OXLEAVE @OXTELEPORT @PAY @RUNOUT @SEX @STARTUP @SUCCESS @USE @@@@ & topics TOPICS Help is also available on these assorted topics: $-COMMANDS ADVICE ATTRIBUTE FLAGS ATTRIBUTES AUTO-TOAD BEING KILLED CONFIGURATION CONTROL DROP-TOS EXAMPLE EXITS FAILURE GENDER GUIDANCE GLOBAL SWITCHES GROUPS HERE HOMES INHERITANCE LICENSE LOCKS MATCHING ME NEW OBJECT FLAGS OBJECT TYPES PLAYER ALIASES PRIMITIVES REGULAR EXPRESSIONS ROOM LOCATIONS ROOT ROOM SUBSTITUTIONS SUCCESS SWITCHES VARIABLES @@@@ & license LICENSE TeenyMUD II is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. TeenyMUD II is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program (see the file 'COPYING'); if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@@@ & advice ADVICE See GUIDANCE. @@@@ & guidance GUIDANCE See ADVICE. @@@@ & @case @case[/first] <string> = <match1>,<action1>,<matchN>,<actionN>[,<default>] For the instance of the specified string, the specified action is taken for every match. There may be any number of match/action argument combinations, and the match argument should be a regular expression. The final argument is taken to be the default action, and is executed if there were no matches. If the "/first" switch is given, only the first matching action will be run, instead of all of them. @@@@ & @config @config[/switches] <option> [= <newvalue>] Changes or displays current configuration settings. Also adds and removes command aliases. The default usage is useful for configuration settings, and should be adapted for other uses. This command accepts the following switches: /set Sets the specified option to the specified new value. /alias Adds the specified alias (new value) to the specifed command (option). Command may contain specified switches. /unalias Deletes the specified command alias. /expand Expands the named command alias. See also: CONFIGURATION, @LOCKOUT @@@@ & @clone @clone <object> [= <name>] Creates an exact copy of the specified object. The new object will have its name set to the name argument, if specified. You must either control an object, or it must be set VISUAL, in order for it to cloned. Certain flags will not be copied over, but all attributes will. The object number of the newly created object will be stored in the CREATE-RESULT variable. See VARIABLES. @@@@ & @create @create <name> Creates a new object, with the specified name. If you control your current location, or it is set ABODE, then that will be the home of the object. Otherwise, the home of the object will be set to your home. The new object will be placed in your inventory. The object number of the newly created object will be stored in the CREATE-RESULT variable. See VARIABLES. See also: HOMES @@@@ & @force & ! @force <object> = <command> !<object> <command> Forces the specified object to execute the specified command(s). You must control the object. In order for an object to force it's owner, it must be set INHERIT, and only a God may force another God. (The exception being if the owner of the object is set INHERIT, in which case any of their objects can force them.) The '!' command is a shorter form version, without the command argument being evaluated. @@@@ & @foreach @foreach <list>/<variable> = <command> For each element in the specified list, the specified variable is to set the value of the element, and specified command(s) are executed. See also: VARIABLES @@@@ & @dig @dig <name> [= <location>] Creates a new room, with the specified name. If location is specified, it will be the location of the new room. You must either control the location, or it must be set ABODE, unless it is the configured "Root Room". If no location is given, it defaults to the configured "Root Room"; location must be specified by number, or the word "root". The object number of the newly created room will be stored in the CREATE-RESULT variable. See VARIABLES. See also: ROOM LOCATIONS @@@@ & @halt @halt[/switches] <object> Halts the specified object, causing all queued commands to be deleted, and preventing the object from executing any additional commands. Sets the HALT flag on the object, which must be unset with the @SET command before the object can execute commands again. This command excepts the following switches: /all Deletes the entire process queue (but sets no flags). /quiet Doesn't send a broadcast when "/all" is used. @@@@ & @name @name <object> = <new name> [<password>] Changes the name of the specified object. You must control the object, and the new name must pass a variety of legality checks in order to take effect. When changing the name of a player, the current password must also be given. If the new name contains spaces, it must be enclosed in double quotes ("). Player names may not be changed, except by an act of God, if the game is running under total registration mode. @@@@ & @notify @notify[/switches] <object> [= <count>] Causes a semaphore wait on the specified object to be triggered. If count is specified, that many waits will be triggered. More notifies may be done than there are pending semaphores, in which case future semaphore waits will take place immediately. This command excepts the following switches: /all All waiting semaphores are triggered. /drain All waiting semaphores are deleted. See also: @SEMAPHORE @@@@ & @parent @parent <object> [= <parent>] Sets the parent of the specified object to the specified parent. You must control the object, and the parent, unless the parent is set PARENT_OK. If no parent is specified, the object will no longer have a parent. See also: INHERITANCE @@@@ & @group @group[/switches] [<argument>] The group command drives the group system. With no switches, it creates a new group, makes you the leader, and sets the description/name of the group to the specified argument. This command accepts the following switches: /join Join the group of the player specified by the argument. /follow Begin following your group leader around. /delete If you are a group leader, dissolve your group. /close If you are a group leader, prevent any others from joining your group. /open Undo the "/close" operation. /silence Disable printing of group messages (prefaced by the string "**] ".) /noisy Re-enable printing of group messages. /say Say the message specified by the argument to all group members. /emote Emote the message specified by the argument to all group members. /display Display a list of all your group members and the name/description. /all Used along with "/display"; displays all groups. @@@@ & @open @open <name>[/<source>] [= <destinations>] Creates a new exit (sometimes referred to as "action" in other systems) with the specifed name. If a source is specified, the exit will be created pre-attached the that object, otherwise the source defaults to your location. If destination(s) are specified, the exit is linked after creation, otherwise it is created unlinked. A source object must either be controlled by you, or set BUILDING_OK. If it is not, the exit creation will fail. Destinations are listed as a string of object names or numbers, separated by semicolons (;). Objects must either be controlled by you, or be set LINK_OK in order for that particular link to succeed. Also, exits may only be linked to one player or room at a time. Exit names may also contain semicolons, each one defining an alias for that exit. The object number of the newly created exit will be stored in the CREATE-RESULT variable. See VARIABLES. Example: @open north;n;no;nor;nort/here = #666 See also: EXITS @@@@ & @link @link[/no_chown] <object> = <destination(s)> Link 'links' the specified object to the specified destination(s). The action that this takes is defined by the type of object being linked. When linking exits, Wizards may specify the "/no_chown" switch to prevent the exit from being chowned to them. For players and objects, this sets the home. See HOMES. For rooms, this sets the drop-to. See DROP-TOs. For exits, this changes the exit's destination(s). See @OPEN and EXITS. You must control the object being linked, and if setting the home of something, the destination must either by controlled by you or be set ABODE. If setting the destination(s) or drop-to, the destination must either be controlled by you or be set LINK_OK. @@@@ & @unlink @unlink <object> Unlinks the specified object. Object must be either a room or exit. For rooms, this removes a previously set drop-to. For exits, this removes all destinations. You must control the object in order to unlink it, unless it is an exit, and you control it's destination. @@@@ & @unlock @unlock <object>[/<lock>] Unlocks the specified object. If a lock is specified, that lock is removed instead of the default. See also: LOCKS @@@@ & @lock @lock <object>[/<lock>] = <expression> Sets the lock on the specified object to the specified expression. If a lock is specified, that lock is set, rather than the default. See also: LOCKS @@@@ & @lockout @lockout[/switches] [<host>][:[<hour>-<hour>][:<limit>]] [= <message>] Allows Wizards to view and manipulate the host lockout lists and other methods of limiting the ability of players to login to the server. By default, it will add the specifed host to the lockout list, delivering the specified message to any matching hosts, and then disconnecting them. Host may be suffixed by an hour range (hours are specifed 00-23) and/or a login limit; if either, or both, are specified, the entry only applies during the specified time frame or if the number of players logged in from the site exceeds the limit. The following switches change how this command behaves: /all Takes no arguments; disables all ability to login. /enable Opposite of all, re-enables normal lockout behaviour. /dump Takes no arguments; displays the lockout lists. /register Add the entry to the registration lists, instead of the lockout lists. /allow Add the entry to the allow lists, instead of the lockout lists. /clear Removes all entries from all the lockout lists. See also: CONFIGURATION, @CONFIG @@@@ & @copy @copy[/move] <object>/<attribute> = <destination>/<attribute> Copies the data from the specified attribute on the specified object, into the specified attribute on the specified destination object. You must either control the source object, or it be set VISUAL, and you must control the destination object for this to succeed. If the "/move" switches is specified, the source attribute is removed after the copy completes. This command is retained for compatibility with TeenyMUD 1.4, only, and has been obsoleted. It may be removed in a future major release. @@@@ & @owned @owned [<owner>] [= [!]<type>/<flags>] Lists all objects owned by the specified object. With an optional type and/or flags specification, the search is limited to those objects matching the specified type and/or flags. If the second argument is prefixed with an exclamation point ('!'), the search is limited to everything but the specified type and/or flags. If the first argument is omitted, the owner searched for defaults to the player running the command. This command is available only to Wizards or above. @@@@ & @palias @palias <player> [= <alias>] Sets the alias for the specified player (typically `me'). You must control the player being operated on, meaning usually only Wizards may set someone elses alias. Without the alias argument, it unsets the player alias. See also: PLAYER ALIASES @@@@ & @entrances @entrances [<object>] Lists all objects that have been linked to the specified object. If no object is specified, it defaults to your location. You must control the object being searched for. @@@@ & @find @find <string> [= [!]<type>/<flags>] Lists all objects owned by you, whose names match the specified string. The specified string may contain regular expressions. With an optional type and/or flags specification, the search is limited to those objects matching the specified type and/or flags. If the second argument is prefixed with an exclamation point ('!'), the search is limited to everything but the specified type and/or flags. See also: REGULAR EXPRESSIONS @@@@ & @trace @trace [<object>] [= <depth>] Lists all objects (usually rooms) that will be searched for exit commands when looking for a match from within the object. If object is not specified, it defaults to your location. If depth is specified, it limits the search to that number of objects. See also: EXITS, ROOM LOCATIONS @@@@ & @trigger @trigger <object>/<attribute> [= <argument1>,<argument2>,<argumentN>] Causes the specified object to execute commands contained within the specified attribute. Any arguments are passed on to the parser, and used in substitutions. See also: SUBSTITUTIONS @@@@ & @stats @stats[/full] [<player>] Returns a short statistic reflecting objects owned by the specified player, or without a player specification, lists the total number of objects in the system. If the "/full" switch is given, it forces long output. When used without a player argument, for instance, this gives a long statistic report for the entire system. Wizards always get full output. @@@@ & @semaphore @semaphore <object>[/<delay>] = <command> Queues the specified command(s) to be run by the specified object when it recieves a semaphore notify. If delay is specified, it is taken to be a timeout value in seconds; if the timeout elapses without a notification being recieved, the command(s) is run, anyway. Note that notifies are accumlative, so if the object has already received extra notifications, the command(s) will be executed immediately. See also: @NOTIFY @@@@ & @children @children <object> Lists the children of the specified object. You must either control the object, or it must be set PARENT_OK. See also: INHERITANCE @@@@ & @edit @edit[/switches] <object>/<attribute> = <string>,<new string> Changes the specified string to the specified new string within the specified attribute on the specified object. The attribute specification may contain regular expressions, in which case all matching attributes have the substition applied. Since the string arguments are parsed using commas (","), they must be escaped with a backslash ("\") if they are to appear in the strings. If the first string is a "$", then the new string is appended to the existing attribute, instead of doing the replacement. As well, if the first string is a "^", then the new string is prepended to the existing attribute value. This command accepts the following switches: /all Automatically edit all matching attributes. /no_space Do not insert a space when prepending or appending. @@@@ & @sweep @sweep [<object>] Lists everything that may be listening within your location, or the specified object. You must control the object if you specify one. @@@@ & help help[/switches] [<subject>] Displays the help entry for the specified subject. If no subject is specified, the "summary" entry is displayed. This command accepts the following switches: /reload Reloads the location map for the help file. @@@@ & news news[/switches] [<subject>] Displays the news entry for the specified subject. If no subject is specified, the "summary" entry is displayed. This command accepts the following switches: /reload Reloads the location map for the news file. @@@@ & look look [<object>] Look at the specified object. If no object is given, look around your current location. Objects must normally be in your location or inventory, but may be looked at remotely if you control it. This command triggers the Description, ODescription, and ADescription attributes. The IDescription attribute can override the Description when looking around from within objects. From within rooms, both Description and IDescription are triggered. @@@@ & examine examine[/switches] [<object>/<attributes>] [= <attributes>] Lists all available data about the specified object. If no object is specified, it defaults to your current location. You must either control the object, or it must be set VISUAL, in order to examine it. You may also examine exits linked to your objects, whether or not you own the exit. If an attributes argument is given, in either form, attribute output is limited to those only matching the specified regular expression. Valid switches (may be abbreviated): /parents Includes inherited attributes in the attribute listing. /rooms When examining a room, will also list all rooms within that one. /attrs Other than the name, only show the object's attributes. @@@@ & inventory inventory Lists all objects you carry. If money is enabled, also lists how many pennies you have. @@@@ & score score If money is enabled, displays how many pennies you have. @@@@ & use use <object> Attempt to use the specified object. If you pass the use lock, the Use, Ouse, and Ause attributes will be triggered. @@@@ & home home Go home. Immediately go home, and do not pass go. All your possessions go home, as well. Nothing receives $200. @@@@ & go go <direction> Attempt to move in the specified direction. Specifying a direction of "home" will cause you to return to your home (See HOME). Successfully moving through an exit will trigger its Success, OSuccess, ASuccess, Drop, ODrop, and ADrop attributes. Failure to do so will trigger the Fail, OFail, and AFail attributes. You must pass the exit's lock in order to go through it or otherwise use it. @@@@ & hand hand <object> = <destination object> Attempt to hand the specified object to the specified destination object. You must be carrying the first object, and must pass the Enter lock of the destination to successfully do so. Successfully handing something to an object triggers its Enter, OEnter, AEnter and OXEnter attributes. Failure to do so will trigger the EnterFail, OEnterFail, and AEnterFail attributes. @@@@ & enter enter <object> Attempt to enter the specified object. You must pass the Enter lock of the object to successfully do so. Successfully entering an object triggers the Enter, OEnter, AEnter, and OXEnter attributes. Failure to do so will trigger the EnterFail, OEnterFail, and AEnterFail attributes. @@@@ & leave leave Leave the object you are inside of. There is no way to prevent this from succeeding. This triggers the Leave, OLeave, ALeave, and OXLeave attributes. @@@@ & @attach @attach <exit> = <object> Attach the specified exit to the specified object, in effect changing its location. You must control the exit, and the object for this to succeed. @@@@ & take take <object> Attempt to pick up the specified object. This will succeed if you pass the object's lock. This command will trigger the Success, OSuccess, and ASuccess attributes upon success. Upon failure, the Fail, OFail, and AFail attributes would be triggered. @@@@ & drop drop <object> Drop the specified object. This will remove it from your inventory and place it in your current location, unless the object is set STICKY (which will cause it to go home), or the room has a drop-to. See also: DROP-TOs @@@@ & kill kill[/slay] <player> [= <cost>] Attempt to kill the specified player, sending them to their home. If money is enabled, and a cost is specified, then the cost becomes the percentage chance of the kill succeeding; a cost of 100 will always work. The victim will be rewarded one half the amount it cost to kill them. People can not be killed in locations set HAVEN. Kill will trigger the Kill, OKill, and AKill attributes on the victim, if successfull. If not successfull, it will trigger the KillFail, OKillFail, and AKillFail attributes on the victim, or the location if the kill failed due to the location being set HAVEN. Wizards may also give the "/slay" switch, which prevents the victim from receiving any money. See also: BEING KILLED @@@@ & @teleport @teleport [<object> =] <location> Attempt to teleport the specified object (which may be a player, thing, or room) to the new specified location. For players and things, you must either control both the object and location, or they must be both set JUMP_OK and you must pass the TelInLock or TelOutLock (whichever is applicable). On rooms, this simply changes the room location, which you must either control or be set ABODE. On players and things, this will trigger the OTeleport, ATeleport, and OXTeleport attributes upon success. @@@@ & @recycle @recycle[/override] <object> Recycles the specified object, freeing the space it was using in the database, and allowing its object number to be reused. You must own the object, or it must be set DESTROY_OK; Wizards must specify the "/override" switch in order to recycle other peoples objects. The cost of creating the object will be returned to its owner, if money is enabled. Players can not (normally) be recycled, they must be toaded first. @@@@ & @charge @charge <object> [= <charges>] Set the amount of charges the object has left. You must control the object, and charges must be a number. If charges is not specified, the object is no longer "charged." See also: CHARGES @@@@ & @set & & @set <object> = [!]<flag> @set <object> = <attribute>[:<value>] @set <object> = <attribute>/<attribute flag> &<attribute> <object> [= <value>] Set (or unset) a flag on the specified object, or if using the expanded syntax, set (or unset) an attribute, or set (or unset) a flag on an attribute. To set a flag, simply give the name of the flag. To unset the flag if it's already set, simply preface the name of the flag with an exclamation point ('!'). To set an attribute, simply specify the name of the attribute, followed immediately by a colon (':'), and the value for the attribute. If no value is given, the attribute will be removed. See @SET2 for more information. @@@@ & @set2 @set <object> = [!]<flag> @set <object> = <attribute>[:<value>] @set <object> = <attribute>/<attribute flag> &<attribute> <object> [= <value>] To set a flag on an attribute, simply specify the name of the attribute, followed immediately by a slash ('/'), and the name of the attribute flag. If the attribute flag name is prefaced by an exclamation point ('!'), the attribute flag will be unset. The '&' form of the command is a shortcut, and is used by giving the attribute name immediately after the '&' sign, the object, and then the optional value. If no value is given, the attribute is removed. See also: ATTRIBUTES, ATTRIBUTE FLAGS, OBJECT FLAGS @@@@ & @password @password <old password> = <new password> This changes your password to the specified new password, if the specified old password matches your current password. @@@@ & give give <object> = <amount> Give the specified amount of money to the specified object. Object is usually a player, but can be anything that has a cost set. Wizards may give negative amounts of money to players, reducing the amount of money the player has. Give will trigger the Pay, OPay, and APay attributes. See also: @COST @@@@ & @cost @cost <object> [= <amount>] Sets the cost of the specified object, i.e., how much money it has to be given before the Pay, OPay, and APay attributes are triggered. Amounts smaller than the cost are rejected, when given. If amount is not specified, or specified as zero, the cost is unset. Objects do not really hold money; any money given to them goes to their owner. See also: GIVE @@@@ & pose & emote & : :<string> pose <string> Causes the specified string to be sent to everyone in the same location as the person running it, prepended with the person's (or object's) name. If the string begins with a single quote or comma, or the command name is used and the no_space switch is given, no space will be printed following the name. The full name version of this command excepts the following switches: /no_space Don't place a space between the name and message. @@@@ & @emit @emit[/others] <string> Causes the specified string to be sent to everyone in the same location as the person running it. If the "/others" switch is given, the string will be sent to everyone except the originating player. @@@@ & @pemit @pemit <player> = <string> Causes the specified string to be sent to the specified player. You must pass the player's PageLock for this to work, and they must pass yours. @@@@ & page page <player> [= <message>] Sends a message to the specified player, if they're logged in. If no message is specified, they will simply be told that they are being paged, and from where. You must pass the player's PageLock in order to page them, and the player must pass yours. Only messages can be sent with page from HIDDEN locations. @@@@ & say & " "<string> say <string> Sends the string, prepended with your name and a phrase stating that you said it, to everyone in your location. @@@@ & whisper whisper <player> = <message> Sends the specified message to the specified player in a private manner. Noone else will receive the message. Usually, the player must be in the same location, except for Wizards, which may preface the player name with a splat ('*') sign, and whisper to any logged in player. @@@@ & @wall @wall <message> Sends the specified message to every logged in player. Only wizards may use this command. This command accepts the following switches: /no_space Don't print a space between the preface and message. /god Only send the message to logged in Gods. /wizard Only send the message to logged in Wizards. /pose Treat the message as it were an emote. /emit Broadcast the message only, with no preface at all. @@@@ & @wait @wait <delay>[/<object>] = <command> Causes the specified command(s) to be executed in the specified (delay) number of seconds. If the delay value is suffixed by 'm', 'h', or 'd', the value is taken to represent that many minutes, hours, or days, instead of seconds. If an object is given, the commands are executed by that object (See @FORCE). @@@@ & @wipe @wipe <object>[/<regular expression>] Removes all matching attributes from the specified object, or all attributes if no regular expression is specified. Only those attributes you have write access to are removed. @@@@ & @ps @ps[/switches] [<object>] Displays the process (wait) queue; only the processes owned by the specified object are listed. You must control the object. This command accepts the following switches: /all Displays all processes in the system. /cause Search by cause instead of owner. /owned Lists all processes running by objects of the same owner. @@@@ & gripe gripe <message> Sends the specified message to the system maintainer, as well as all logged in Gods and Wizards. @@@@ & @version @version Prints the version string of the currently running server. @@@@ & @boot @boot[/nomesg] <player> [= <fd>] Disconnect the specified player from the game. If an fd argument is given, only the login to that player from that specific fd will be disconnected. If the "/nomesg" switch is given, the player will be given no notification before they are disconnected. Only wizards may use this command. See also: SESSION @@@@ & @chown @chown <object> = <owner> Changes the ownership of the specified object to the specified new owner. The object must either be CHOWN_OK, or the command run by a Wizard. @@@@ & @dump @dump Flushes the database cache to disk, and backs up the database files. The name 'dump' is used for historic reasons. Only Wizards may use this command. @@@@ & @newpassword @newpassword <player> = <password> Sets the password of the specified player. Only Wizards may use this command. @@@@ & @toad @toad <player> [= <owner>] Turns the specified player into a smily toad. If an owner is specified, all of the player's objects are chowned to it, otherwise all of the player's objects are recycled. Only Wizards may use this command. @@@@ & @shutdown @shutdown Shuts down the server. Only Wizards may use this command. @@@@ & @pcreate @pcreate <name> = <password> Creates a new player, with the specified name and password. This is primarily useful on systems where it is not possible to create new players from the greetings screen. The new player is usually created in your current location. Only Wizards may use this command. @@@@ & @purge @purge <player> Destroys all of the specified player's objects. Only Wizards may use this command. @@@@ & @chownall @chownall <player> = <owner> Chowns all of the specified player's objects to the specified owner. Only Wizards may use this command. @@@@ & @quota @quota [<player>] [=<value>] For normal players, this command displays their current object quota. For Wizards, this command will display the current object quota of the specified player, or if a value is given, set their object quota to that value. @@@@ & @poor @poor <value> Sets the amount of money every player has to the specified value. Useful when running an old database that didn't support money, on a server that does. @@@@ & @motd @motd[/set] [<which>] [= <message>] If the "/set" switch is given, this sets the user-specified portion of the 'motd' system to the specified message, or if no message is given, clears it. The first argument specifies which portion of the 'motd' system to set, and can be one of "wiz", for the Wizard motd, "motd", for the normal motd, or "new", for the new-player motd. Only wizards may do this. Otherwise, the current message of the day is printed. @@@@ & quit QUIT Disconnects you from the system, and notifies everyone in your location that you've disconnected. @@@@ & who WHO [<player>] Displays a tally of all logged in players, how long they've been on, their idle time, and the message that they've set with the @DOING command. Wizards also see a select set of flags. If an argument is given, only players matching that string are listed. @@@@ & where WHERE [<player>] Displays a tally of all logged in players, and possibly their location. Wizards see their location number, fd number, port number, and from where the connection originates. If an argument is given, only players matching that string are listed. If a player is not set HIDDEN, and their location is not set HIDDEN, normal players will see their location name in the output from WHERE. If the player running the WHERE controls the location, they will also see the location number. @@@@ & session SESSION [<player>] Displays a tally of all logged in players, how many times they've blown their input quota, and how many bytes they've sent and received. Only Wizards may use this command. @@@@ & stty STTY [<mode> = <option>] Displays your current connection's settings, or with the optional arguments changes those settings. mode may be specified as either "wrap", or "nlmode". The option argument to "wrap" should be a number; specifing a setting of 0 turns off line wrap. The option argument to "nlmode" should be one of: "crnl", "nlcr", "cr", or "nl"; the newline termination will be set appropriately. crnl is the default. See also: @SAVESTTY @@@@ & @savestty @savestty[/switches] [<player>] Saves the connection settings (set via STTY) for the specified player; if no player is specified, the player typing the command is assumed. The saved settings will be restored whenever the player connects to the server. NOTE: Due to the nature of this command's implementation, if the player is connected to the server multiple times, results may not be as expected. This command accepts the following switches: /clear The existing saved stty settings are removed. /restore The saved stty settings are restored to the current ones. See also: STTY @@@@ & configuration CONFIGURATION The dynamic configuration system uses a set of key words to determine which of the internal options are changed. There are also some that can only be set at initialization time, for security reasons. These options can be set at initialization time from a configuration file, and/or set via the @CONFIG command. See CONFIGURATION OPTIONS for more information. @@@@ & configuration options CONFIGURATION OPTIONS The following configuration options are supported. An asterisk ('*') denotes an option that may only be set at initialization time, and the trailing letter denotes the type of value this option takes. Help is available for each one, and asking for help on the configuration name suffixed by the word 'configuration'. 'S' denotes a string value, 'B' boolean (on/off or yes/no), 'F' object flags, 'N' a number, and 'T' for a time value. mudname [S*] hostnames [B] registration [B] logcommands [B] enable_quota [B] enable_money [B] enable_groups [B] enable_autotoad [B] wizwhoall [B] dark_sleep [B] file_access [B*] file_exec [B*] enable_rwho [B*] hfile_autoload[B] default_port [N*] rwho_port [N*] starting_loc [N*] root_location [N] player_god [N*] parent_depth [N] exit_depth [N] room_depth [N] growth_increment [N*] slack [N*] starting_quota [N] starting_money [N] daily_paycheck [N] queue_commands [N] queue_cost [N] find_cost [N] limfind_cost [N] See CONFIGURATION OPTIONS2 for more information. @@@@ & configuration options2 CONFIGURATION OPTIONS stat_cost [N] fullstat_cost [N] room_cost [N] thing_cost [N] exit_cost [N] minkill_cost [N] maxkill_cost [N] max_list [N] max_commands [N] max_pennies [N] cache_size [N*] cache_width [N*] cache_depth [N*] queue_slice [N] build_flags [F] robot_flags [F] wizard_flags [F*] god_flags [F*] player_flags [F] money_penny [S] money_nickle [S] money_dime [S] money_quarter [S] money_dollar [S] money_pennies [S] money_nickles [S] money_dimes [S] money_quarters [S] money_dollars [S] dump_interval [T] login_timeout [T] player_timeout [T] rwho_interval [T] rwho_passwd [S*] rwho_host [S*] dbm_file [S*] db_file [S*] help_file [S] news_file [S] motd_file [S] wizn_file [S] greet_file [S] newp_file [S] register_file [S] bye_file [S] shtd_file [S] guest_file [S] timeout_file [S] badconn_file [S] badcrt_file [S] status_file [S] gripe_file [S] command_file [S] error_file [S] panic_file [S] chdir_path [S*] files_path [S*] @@@@ & mudname configuration CONFIGURATION OPTIONS mudname. Specifies the name of the system, which is used in log files and as identification to RWHO servers. @@@@ & hostnames configuration & registration configuration & logcommands configuration & wizwhoall configuration CONFIGURATION OPTIONS hostnames. Specifies whether or not hostnames (versus IP numbers) will be looked up for incoming connections. registration. If true, no player creation from the greet screen is allowed at all. logcommands. If true, all commands (instead of just sensitive ones) are logged to the commands log file. wizwhoall. Specifies whether or not all players see the information normally reserved for Wizards in the WHO, WHERE and SESSION commands. @@@@ & enable_quota configuration & enable_money configuration & enable_groups configuration & enable_autotoad configuration & enable_rwho configuration CONFIGURATION OPTIONS enable_quota. Specifies whether or not object quotas will be used. enable_money. Specifies whether or not money (pennies) will be used. enable_groups. Specifies whether or not the GROUPS system is active. enable_autotoad. Specifies whether or not AUTO-TOAD is active. enable_rwho. Specifies whether or not RWHO support is active. See also: AUTO-TOAD, GROUPS @@@@ & dark_sleep configuration & file_access configuration & file_exec configuration & hfile_autoload configuration CONFIGURATION OPTIONS dark_sleep. Specifies whether or not disconnected players are normally visible. file_access. Specifies whether or not the server can access (read) certain files. file_exec. Specifies whether or not the server can execute certain files. hfile_autoload. Specifies whether or not the server will `autoload' the location maps for the help and news files each time their timestamps change. @@@@ & default_port configuration & rwho_port configuration CONFIGURATION OPTIONS default_port. Specifies the TCP/IP port number that the server will listen for connections on. rwho_port. Specifies the UDP port number that the server will attempt to communication with the RWHO server on. @@@@ & starting_loc configuration & root_location configuration & player_god configuration CONFIGURATION OPTIONS starting_loc. Specifies the starting location of newly created players. root_location. Specifies the object number of the Root Room. player_god. Specifies the object number of the default God player. @@@@ & parent_depth configuration & exit_depth configuration & room_depth configuration CONFIGURATION OPTIONS parent_depth. Specifies the maximum number of parents an object may have. exit_depth. Specifies the maximum recursion depth within exit links. room_depth. Specifies the maximum depth of room locations. @@@@ & growth_increment configuration & slack configuration CONFIGURATION OPTIONS growth_increment. Specifies how many extra slots are created when the internal database array is extended. Generally should be larger on a system that has a lot of building going on. slack. Specifies how many extra internal object structures are kept around. Generally should be larger the more building is going on. @@@@ & starting_quota configuration & starting_money configuration & daily_paycheck configuration CONFIGURATION OPTIONS starting_quota. Specifies the initial object quota value for new players. starting_money. Specifies the initial money value for new players. daily_paycheck. Specifies the amount of money that players receive each day that they connect to the server. @@@@ & money_penny configuration & money_nickle configuration & money_dime configuration & money_quarter configuration & money_dollar configuration & money_pennies configuration & money_nickles configuration & money_dimes configuration & money_quarters configuration & money_dollars configuration CONFIGURATION OPTIONS money_penny. Specifies the name for one piece of money. money_nickle. Specifies the name for five pieces of money. money_dime. Specifies the name for ten pieces of money. money_quarter. Specifies the name for twenty-five pieces of money. money_dollar. Specifies the name for one-hundred pieces of money. money_pennies, money_nickles, money_dimes, money_quarters, money_dollars. Species the plural names for the above. @@@@ & queue_commands configuration & queue_cost configuration CONFIGURATION OPTIONS queue_commands. Specifies the number of commands that may be queued up by a player's objects before they are charged anything. queue_cost. Specifies the amount of money that a player is charged when they've queued up the number of commands specified by queue_commands. @@@@ & find_cost configuration & limfind_cost configuration & stat_cost configuration & fullstat_cost configuration CONFIGURATION OPTIONS find_cost. Specifies the amount of money a full @FIND command costs. limfind_cost. Specifies the amount of money a limited @FIND command costs (i.e., has a second argument of some sort). stat_cost. Specifies the amount of money the @STAT command costs. fullstat_cost. Specifies the amount of money a full @STAT command costs. @@@@ & room_cost configuration & thing_cost configuration & exit_cost configuration & minkill_cost configuration & maxkill_cost configuration CONFIGURATION OPTIONS room_cost. Specifies the amount of money it costs to @DIG a room. thing_cost. Specifies the amount of money it costs to @CREATE something. exit_cost. Specifies the amount of money it costs to @OPEN an exit. minkill_cost. Specifies the minimum amount of money the KILL command costs. maxkill_cost. Specifies the maximum amount of money the KILL command costs. @@@@ & max_list configuration & max_commands configuration & max_pennies configuration CONFIGURATION OPTIONS max_list. Specifies the maximum (displayed) length of an object list (such contents). max_commands. Specifies the maximum number of commands the server will respond to from a network connection, during one second. max_pennies. Specifies the maximum amount of money a player may normally possess. @@@@ & cache_size configuration & cache_width configuration & cache_depth configuration & queue_slice configuration CONFIGURATION OPTIONS cache_size. Specifies the maximum size (in bytes) of the object cache. cache_width. Specifies the initial width (in objects) of the cache. cache_depth. Specifies the maximum depth (in objects) of the cache. queue_slice. Specifies how many commands are run off of the top of the queue at once. The higher the setting, the slower interactive response time gets. @@@@ & build_flags configuration & robot_flags configuration & wizard_flags configuration & god_flags configuration & guest_flags configuration & player_flags configuration CONFIGURATION OPTIONS build_flags. Specifies the object flags required in order to create things (i.e., build). robot_flags. Specifies the object flags required to be considered a robot. Usuaully this entails special input/output processing features. wizard_flags. Specifies the flags required to be a Wizard. god_flags. Specifies the flags required to be a God. guest_flags. Specifies the flags needed in order to be considered a guest. player_flags. Specifies the initial flags for newly created players. @@@@ & dump_interval configuration & login_timeout configuration & player_timeout configuration CONFIGURATION OPTIONS dump_interval. Specifies how often the object cache is flushed to disk, and the database backed up, in seconds. login_timeout. Specifies the idle timeout, in seconds, for connections that haven't logged into a player, yet. player_timeout. Specifies the idle timeout, in seconds, for logged in players. @@@@ & rwho_interval configuration & rwho_passwd configuration & rwho_host configuration CONFIGURATION OPTIONS rwho_interval. Specifies the period, in seconds, between updates sent to the RWHO server. rwho_passwd. Specifies the password used in talking to the RWHO server. rwho_host. Specifies the hostname of the RWHO server to use. @@@@ & dbm_file configuration & db_file configuration & help_file configuration & news_file configuration & greet_file configuration & motd_file configuration & wizn_file configuration CONFIGURATION OPTIONS dbm_file. Specifies the name of the file passed to the DBM library, including extension. db_file. Specifies the name of the in-core database when saved to disk. help_file. Specifies the name of the help text file. news_file. Specifies the name of the news text file. greet_file. Specifies the name of the file that is sent to all network connections. motd_file. Specifies the name of the file that is sent to all players as they log in. wizn_file. Specifies the name of the file that is sent to all Wizards as they log in. @@@@ & newp_file configuration & register_file configuration & bye_file configuration & shtd_file configuration & guest_file configuration & timeout_file configuration & badconn_file configuration & badcrt_file configuration CONFIGURATION OPTIONS newp_file. Specifies the name of the file sent to all newly created players. register_file. Specifies the name of the file sent to all player creation attempts which fail due to registration being in effect. bye_file. Specifies the name of the file sent when a player disconnects. shtd_file. Specifies the name of the file sent when the server shuts down. guest_file. Specifies the name of the file sent to Guests when they connect. timeout_file. Specifies the name of the file sent to players when they idle too long and are timed out. badconn_file. Specifies the name of the file sent to a network connection when a player login fails. badcrt_file. Specifies the name of the file sent to a network connection when a player creation attempt fails for some reason other than registration. @@@@ & status_file configuration & gripe_file configuration & command_file configuration & error_file configuration & panic_file configuration CONFIGURATION OPTIONS status_file. Specifies the name of the `status' log file. If specified as a dash ('-'), the log is sent to stderr. gripe_file. Specifies the name of the `gripe' log file. If specified as a dash ('-'), the log is sent to stderr. command_file. Specifies the name of the `command' log file. If specified as a dash ('-'), the log is sent to stderr. error_file. Specifies the name of the `errors' log file. If specified as a dash ('-'), the log is sent to stderr. panic_file. Specifies the name of `panic' log file. If specified as a dash ('-'), the log is sent to stderr. @@@@ & chdir_path configuration & files_path configuration CONFIGURATION OPTIONS chdir_path. Specifies the directory name that the server (and other utilities) change their working directory to directly after reading the configuration file. Useful primarily for debugging purposes. files_path. Specifies the directory name that the server can find the files referenced by objects in. See FILES and FILE_OK. @@@@ & auto-toad AUTO-TOAD If `auto-toad' is active, the server will automatically recycle any players that A.) Do not have a Description set, and B.) Do not own any objects. This is meant to cut down on database bloat. The name is retained for historic reasons. @@@@ & groups GROUPS Groups are a facility by which players (as a group or channel) may communicate across large distances, as well as follow each other around the database. Messages sent to all group members are prefaced with the string `**] '. When a group leader disconnects, the group is automatically dissolved. @@@@ & homes HOMES The concept of a 'home', or 'homes', is quite simple, really. A player's home is where they go when they type 'home', or are killed. An object's home is where it goes when the player carrying it goes home, or when it's dropped and is set STICKY. As well, if an exit's destination is set to HOME, then anything going through it will end up in their home. @@@@ & room locations ROOM LOCATIONS All rooms have a location, of a sort. This defaults to the "Root Room", and is set with the @TELEPORT command. Room locations are useful because they define a chain of rooms that are searched for matching exits, whenever something tries to use an exit. This search begins with the current location, and then searches backwards through each location, until it reaches the "root" room. This allows "global exits" and "zones" to be created with ease. See also: ROOT ROOM @@@@ & root room ROOT ROOM The Root Room is, quite literally, the center of the universe, as far as TeenyMUD is concerned. It is the default location of all rooms on the system, and it is always checked for matching exists. It (and its contents) are always checked for matching $-commands, allowing global commands to be defined by the database. As such, non-Wizard players (and their objects) should NEVER be allowed in the Root Room, since they could also define global $-commands. See also: EXITS, ROOM LOCATIONS, $-COMMANDS @@@@ & flags & object flags OBJECT FLAGS TeenyMUD supports a vast number of 'object flags', settings that change how an object behaves or interacts with others. Help is available on each individual flag. ABODE ACTION AUDIBLE BUILDER BUILDING_OK CHOWN_OK DARK DESTROY_OK ENTER_OK ELOQUENT EXTERNAL FILE_OK GOD GUEST HALT HAVEN HIDDEN INHERIT JUMP_OK LIGHT LINK_OK LISTENER NOSPOOF NOCHECK OBVIOUS OPAQUE PARENT_OK PICKY PUPPET QUIET RETENTIVE REVERSED_WHO ROBOT STICKY TRANSPARENT VISUAL WIZARD See also: TYPES, ATTRIBUTE FLAGS @@@@ & abode ABODE (A) The ABODE flag allows anyone to set the HOME of an object that they own, to the ABODE object. When this flag is set, it makes the object number visible. @@@@ & action ACTION (a) The ACTION flag specifies that an exit is to be treated as an action, that is, it will behave differently than a normal exit. Examples of this include, if the exit is linked to an object, the object can be brought to the location of the object that triggered the exit, rather than the object that triggered the exit being moved to inside of the destination. See also: EXITS @@@@ & audible AUDIBLE (v) If an exit is set AUDIBLE, all noises in its source location will be echoed to its destination. If a player or thing are set AUDIBLE, all noises that take place outside of the object will be echoed to the inside of the object. This flag can not be set on rooms. @@@@ & builder BUILDER (B) If a player is set BUILDER, they generally have permission to create objects, and otherwise expand the database. @@@@ & building_ok BUILDING_OK (B) If a thing or a room is set BUILDING_OK, then anyone may open exits in that location. When this flag is set, it makes the object number visible. See also: @OPEN @@@@ & chown_ok CHOWN_OK (C) If a thing, exit, or room is set CHOWN_OK, then anyone may change the owner of the object to themselves. When this flag is set, it makes the object number visible. See also: @CHOWN @@@@ & dark DARK (D) If something is set DARK, then it doesn't show up to the normal 'look' type operations. If a room is set DARK, then it's contents don't show up. DARK objects may only be dropped in locations in you own. @@@@ & destroy_ok DESTROY_OK (d) If something is set DESTROY_OK, then anyone may @recycle it. When this flag is set, it makes the object number visible. See also: @RECYCLE @@@@ & enter_ok ENTER_OK (e) Setting the ENTER_OK flag on an object makes it 'enterable', and anything may enter it if the EnterLock is not set. See also: ENTER @@@@ & external EXTERNAL (x) If an exit is set EXTERNAL, it is matched from 'outside' it's location. I.e., an EXTERNAL exit on an object can only be triggered from that object's location, rather than from inside the object. See also: EXITS @@@@ & file_ok FILE_OK (F) If something is set FILE_OK, it has the ability to reference any of the server's files, including those owned by other objects. This flag may only be set a by a GOD. @@@@ & god GOD (G) If something is set GOD, they are all-powerful, and capable of many extraordinary feats. They also have unusually large egos. Only another GOD may set this flag. @@@@ & guest GUEST (g) The GUEST flag usually denotes a player with the least privileges possible. It is often set upon players that are considered 'guests', with public passwords. @@@@ & halt HALT (h) If something is set HALT, no further commands will be run by it from the @wait queue. This flag is normally only set (and unset) internally. See also: @WAIT, @PS, @HALT @@@@ & startup STARTUP (s) This flag denotes something that has a 'Startup' attribute. This flag is set (and unset) only internally. See also: ATTRIBUTES @@@@ & haven HAVEN (H) If something is set HAVEN, then things may not be killed from within it. See also: KILL @@@@ & hidden HIDDEN (i) If something is set HIDDEN, then it's location is no longer public, and will not displayed by such commands as WHERE. See also: WHERE @@@@ & inherit INHERIT (I) If something is set INHERIT, it inherits the powers of it's owner, to a limited extent: if the owner is a Wizard, then the object gains Wizard powers, and the object may force it's owner. If a player is set INHERIT, then it has the same effect as if all of their objects were set INHERIT. @@@@ & jump_ok JUMP_OK (J) If something is set JUMP_OK, then anyone may @teleport to or from that object. As well, anyone may @teleport a JUMP_OK player or thing at will, as long as they have @teleport permission on the location and destination. When this flag is set, it makes the object number visible. See also: @TELEPORT @@@@ & light LIGHT (t) The LIGHT flag reverses some of the affects of the DARK flag. If the LIGHT flag is set on a thing or player, they will show up in the contents of a DARK location; if an exit is set LIGHT, it's messages will still be sent to DARK locations. @@@@ & link_ok LINK_OK (L) If something is set LINK_OK, then anyone may link exits to it. When this flag is set, it makes the object number visible. See also: @LINK @@@@ & listener LISTENER (l) If something is set LISTENER, it 'listens' for strings that match its attributes, and runs commands when they do. For instance, if an object were set LISTENER, and had the following attribute set Foo: ^*foo*::heard the f word! the object would run ':heard the f word!' everytime it heard anything which contains 'foo'. The "^" character denotes listening attributes. The "^" attributes only listen for strings caused by other objects, and won't match against anything produced by the object itself. To listen for strings set off by the same object, use "+", instead. @@@@ & nospoof NOSPOOF (n) If a player is set NOSPOOF, the object number of the original cause of all messages is prefaced to any that the player hears. @@@@ & nocheck NOCHECK (N) If something is set NOCHECK, it will simply not be checked for any $-commands. This flag is especially recommended for the Root Room and any of its contents, if they don't have any $-commands. See also: $-COMMANDS @@@@ & obvious OBVIOUS (O) If an exit is set OBVIOUS, it will be listed whenever something looks around, from inside of it's location. @@@@ & opaque OPAQUE (o) If a thing or player is set OPAQUE, their contents can not be seen from outside. @@@@ & parent_ok PARENT_OK (X) If something is set PARENT_OK, anyone may @parent their objects to it, allowing those objects to inherit attributes off of the parent. When this flag is set, it makes the object number visible. See also: INHERITANCE @@@@ & picky PICKY (y/P) If something is set PICKY, only objects of the same type may inherit attributes from it. If an attribute is set PICKY, then only objects of the same type as its source object may inherit it. See also: INHERITANCE @@@@ & puppet PUPPET (p) If an object is set PUPPET, everything it hears is relayed back to its owner, with its name prefaced. For example puppet> Xibo asks the puppet why it can't be a Penguin, instead. @@@@ & quiet QUIET (Q) If an something is set QUIET, it will neither generate nor hear `noisy' messages. These include failure messages from commands. This flag is more useful for objects that perform complex actions. See also: GLOBAL SWITCHES, SWITCHES @@@@ & eloquent ELOQUENT (q) If a player or thing is set ELOQUENT, the arguments to `speech' commands will not be evaluated. These commands include: say, pose, page, whisper, and a few others. @@@@ & retentive RETENTIVE (w) If a player is set RETENTIVE, they are alerted all connects and disconnects to the server. Only a Wizard can set this flag. @@@@ & reversed_who REVERSED_WHO (b) If a player is set REVERSED_WHO, the 'WHO' style commands list their output in reversed order (most recent first). By default, TeenyMUD II uses the list order from the early 1.x versions. See also: WHO, WHERE, SESSION @@@@ & robot ROBOT (r) If a player is set ROBOT, they are denoted as a remote 'robot'. @@@@ & sticky STICKY (S) If a something is set STICKY, it customarily goes 'home' when dropped. As well, the STICKY flag decides how objects react to ACTIONS that are linked to them. On rooms, the STICKY flag causes the 'Drop to' to be delayed until all the players have left the room. See also: HOMES, DROP-TOS @@@@ & transparent TRANSPARENT (p) If an exit is set TRANSPARENT, it will cause anything looking at it to see it's destination, with some limitations. The exit and destination must be owned by the same person, or the destination must be set VISUAL. As for picking which desintation to look at, the first destination that's not an exit and satisfies the permissions check is chosen. If there is no satisfactory destination, the TRANSPARENT flag has no effect. @@@@ & visual VISUAL (V) If the VISUAL flag is set on something, the 'examine' command may be used by anyone to get detailed information on that object. When this flag is set, it makes the object number visible. See also: EXAMINE @@@@ & wizard WIZARD (W) If something is set WIZARD, they have a remarkable number of special powers, such as control over every object in the database, and the ability to see expanded information about the universe. This flag may only be set by a GOD. @@@@ & types & object types OBJECT TYPES In TeenyMUD, there are four basic object types: Players (denoted by a 'P'), Rooms (denoted by a 'R'), Exits (denoted by an 'E'), and Things. Generally, Players are objects that can connect to the server, Rooms are locations, Exits connect two locations together, and Things are everything else. Most often, though, the use of a particular object type is more general; for instance, a Thing makes almost as good of a location as a Room, and it's very difficult to tell Players and Things apart. @@@@ & attribute flags ATTRIBUTE FLAGS Attributes can have flags, setable (and unsetable) using the '@set' command. Help is available for each individual flag. IMMUTABLE INTERNAL PICKY PRIVATE VISIBLE @@@@ & private PRIVATE (P) When an attribute is set PRIVATE, it can not be inherited by anything, and is only available to the object it is local to. @@@@ & visible VISIBLE (V) When an attribute is set VISIBLE, it is publically visible, overriding all other permissions for accessing that particular attribute. @@@@ & immutable IMMUTABLE (i) When an attribute is set IMMUTABLE, it is visible to the object's owner, but not changeable. This flag is only settable by Wizards. @@@@ & internal INTERNAL (I) When an attribute is set INTERNAL, it is not available (or even typically visible) to a normal user. These attributes are set only internally (as the name would imply) by the system. @@@@ & attributes ATTRIBUTES An object can have any number of user-defined attributes, set using the '@set' and '&' commands. The following attributes are also used specially, in order to define how the system behaves in various ways. Help is available for each one, if you suffix the name with the word 'attribute'. (For example, 'help kill attribute'.) Here is a general list: Adescription Adrop Aenter AenterFail Afail Akill Aleave Apay Asuccess Ateleport AudibleFilter AudiblePrefix Ause Description Drop Enter EnterFail Fail Idescription Kill Leave Odescription Odrop Oenter OenterFail Ofail Okill Oleave Opay Osuccess Oteleport Ouse Oxenter Oxleave Oxteleport Pay Runout Sex Startup Success Use See ATTRIBUTES2 for more information. @@@@ & attributes2 ATTRIBUTES Most of the standard attributes whose names begin with the letter 'A' are ``action attributes''. These attributes are assumed to contain commands, which are run by an object whenever applicable. For example, when something is dropped, it's Drop, ODrop, and ADrop attributes can be triggered. The Drop attribute is ``triggered'' simply by being printed to the person doing the dropping; the ODrop is sent to everyone else in the same location, and the ADrop would be executed by the object being dropped. @@@@ & adescription attribute & idescription attribute & odescription attribute & description attribute DESCRIPTION ATTRIBUTES The description set of attributes consist of the following: Description, ODescription, ADescription, and the special IDescription. The Description attribute is displayed whenever something is looked at, which causes the ODescription to be triggered and seen by everyone in the same location. The ADescription will also be run by the object being looked at. The special IDescription works as Description, except that it is only visible from within an object; if an object doesn't have an IDescription, the Description will be used instead. In addition, since Rooms can not be looked at from ``outside'', their IDescription will always be displayed, just following their Description. @@@@ & adrop attribute & odrop attribute & drop attribute DROP ATTRIBUTES The drop set of attributes consist of the following: Drop, ODrop, and ADrop. These attributes are triggered whenever an object is dropped. The Drop attribute will be displayed to the person dropping the object, the ODrop is sent to everyone in the same location (prefaced by the player's name), and the ADrop consists of a set of commands that will be executed directly by the object being dropped. @@@@ & enter attribute & aenter attribute & oenter attribute & oxenter attribute ENTER ATTRIBUTES The enter attributes consist of the following: Enter, OEnter, OXEnter, and AEnter. These attributes are triggered whenever an object is entered (using the enter command). The Enter attribute will be displayed to the person entering the object, the OEnter is sent to everyone in the same location (prefaced by the player's name), and the AEnter consists of a set of commands which will be executed directly by the object being entered. The OXEnter attribute is special in that its sent to everyone in the players new location. @@@@ & enterfail attribute & oenterfail attribute & aenterfail attribute ENTERFAIL ATTRIBUTES The enterfail attributes consist of the following: EnterFail, OEnterFail, AEnterFail. These attributes are triggered whenever something fails to enter an object (fails the EnterLock). The EnterFail attribute is displayed to the person that attempted to enter the object, OEnterFail is sent to everyone in the same location (prefaced by the player's name), and the AEnterFail consists of a set of commands which will be executed directly by the object that was failed to be entered. @@@@ & leave attribute & oleave attribute & aleave attribute & oxleave attribute LEAVE ATTRIBUTES The leave attributes consist of the following: Leave, OLeave, OXLeave, and ALeave. They are triggered whenever something leaves another object. The Leave attribute is displayed to the person that leaves an object, the OLeave is sent to everyone in the same location as the player (prefaced by the player's name), and the ALeave consists of a set of commands which will be executed directly by the object that is being left. The OXLeave attribute is displayed (prefaced by the player's name) to everyone in the player's new location. @@@@ & fail attribute & ofail attribute & afail attribute FAIL ATTRIBUTES The fail attributes consist of the following: Fail, OFail, and AFail. They are triggered whenever something fails to take an object, go through an exit, or otherwise no pass an object's Lock. The Fail attribute is displayed to the person that fails the Lock, the OFail is sent to everyone in the same location (prefaced by the player's name), and the AFail consists of a list of commands that will be executed by the object itself. @@@@ & success attribute & osuccess attribute & asuccess attribute SUCCESS ATTRIBUTE The success attributes consist of the following: Success, OSuccess, and ASuccess. They are triggered whenever something successfully takes an object, goes through an exit, or otherwise passes an object's Lock. The Success attribute is displayed to the person succeeding, the OSuccess attribute is sent to everyone in the same location (prefaced by the player's name), and the ASuccess consists of a list of commands that will be executed by the object itself. @@@@ & kill attribute & okill attribute & akill attribute & killfail attribute & okillfail attribute & akillfail attribute KILL ATTRIBUTES The kill attributes consist of the following: Kill, OKill, AKill, KillFail, OKillFail and AKillFail. They are triggered whenever something is (or is not) killed. The Kill attribute is displayed to the person doing the killing, the OKill is sent to everyone in the same location (prefaced by the player's name), and the AKill consists of a list of commands that will be executed by the object itself. The KillFail attributes are displayed/activated if the kill attempt fails. If the kill fails due to the location being HAVEN, the attributes on the location are triggered. @@@@ & teleport attribute & oteleport attribute & ateleport attribute & oxteleport attribute TELEPORT ATTRIBUTES The teleport attributes consist of the following: Teleport, OTeleport, ATeleport, and OXTeleport. They are triggered whenever an object is teleported (with the @teleport command). Unlike most other attributes, the Teleport attribute is sent to the object being teleported, the OTeleport attribute is sent to everyone in the object's previous location (prefaced by its name), and the OXTeleport is sent to everyone in the object's new location. The ATeleport attribute is assumed to contain a list of commands, which will be executed. @@@@ & use attribute & ouse attribute & ause attribute USE ATTRIBUTES The use attributes consist of the following: Use, OUse, AUse. They are triggered whenever an object is used (with the use command). The Use attribute will be displayed to the person using the object, the OUse will be sent to everyone in the same location (prefaced by the player's name), and AUse is assumed to contain a list of commands, which will be executed by the object. @@@@ & pay attribute & opay attribute & apay attribute & cost attribute PAY ATTRIBUTES The pay attributes consist of the following: Pay, OPay, APay, and Cost. They are triggered whenever an object is given at least Cost amount of money. The Pay attribute will be displayed to the person paying the object, the OPay will be sent to everyone in the same location (prefaced by the player's name), and the APay is assumed to contain a list of commands that will be executed by the object. The Cost attribute contains a number, determining how much money that an object must be given (with the give command), before the Pay attributes will be triggered. @@@@ & runout attribute RUNOUT ATTRIBUTE The Runout attribute is assumed to contain a list of commands that will be executed when an object's charges have been all used up. See also: CHARGES, @CHARGE @@@@ & sex attribute SEX ATTRIBUTE The Sex attribute is used to determine a player's (or other object's) gender, which is used for pronoun substitution and the like. See also: SUBSTITUTIONS. @@@@ & variables VARIABLES Variables are global state, maintained on a per-player basis. They are not attributes, and are thus not preserved between server boots. They are normally set and retrieved using the SETVAR and GETVAR primitives, but some user commands also manipulate them. The value of a variable can also be retrieved using the $(variable) substitution, where the name of the variable is enclosed within the parans. @@@@ & inheritance INHERITANCE Inheritance is the notion by which multiple objects can share the same attributes. By setting an object to be the child of another, the child then inherits any attributes from the parent that it does not have locally. Parents can be chained, allowing complex objects to be built from the attributes of several others; each time an attribute is needed on the child object, the chain of parents are searched, in order, until a matching attribute is found. Using inheritance wisely can save vast amounts of space in the system database, and is generally a good thing. Attributes (and objects) can limit what types of objects can inherit them using the object or attribute PICKY flag. See also: @CHILDREN, @PARENT, PICKY @@@@ & control CONTROL The notion of 'control' determins whether or not you can make changes to an object, destroy it, and otherwise manipulate it in various ways. You always control everything you own, and Wizards always control everything, including you. @@@@ & exits EXITS Exits are the objects that link other objects together; they are used by moving through them. They are also the most complex type of object in the system. Exits can be used to implement commands (since they're parsed just like them), and can be used to implement a form of command inheritance using room locations. Exits also have the notion of being either "external" or "internal," in that they can be used either from within or outside of the object they're attached to. As well, exits have a notion of being "actions," which means that instead of moving an object from point to another point, they can cause a variety of things to happen, including moving objects to the location of whatever triggered them. See also: EXIT MATCHING, EXTERNAL, ACTION, @OPEN @@@@ & locks LOCKS Locks allow how an object reacts to another to be decided based upon a complex boolean expression. The symbol '&' means 'and', '|' means 'or', and '!' means 'not', with the parentheses grouping expressions. Object names, numbers, or player names prefaced with the splat (*) mark are 'constants'. Constants can also be made up of attribute references, consisting of 'attribute_name:value', and flag references, consisting of 'flag:flag_name'. For example, to make sure that only someone with their Sex attribute set to FEMALE, except Xibeth, or yourself could pick you up, this command would do the trick: @lock me = (me | sex:FEMALE) &! *Xibeth @@@@ & @describe @describe <object> [= <string>] Sets the Description attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @idescribe @idescribe <object> [= <string>] Sets the IDescription attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @odescribe @odescribe <object> [= <string>] Sets the ODescription attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @adescribe @adescribe <object> [= <string>] Sets the ADescription attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @success @success <object> [= <string>] Sets the Success attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @osuccess @osuccess <object> [= <string>] Sets the OSuccess attribute on the specified object. If no string argument in given, the attribute is removed. @@@@ & @asuccess @asuccess <object> [= <string>] Sets the ASuccess attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @fail @fail <object> [= <string>] Sets the Fail attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @ofail @ofail <object> [= <string>] Sets the OFail attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @afail @afail <object> [= <string>] Sets the AFail attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @drop @drop <object> [= <string>] Sets the Drop attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @odrop @odrop <object> [= <string>] Sets the ODrop attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @adrop @adrop <object> [= <string>] Sets the ADrop attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @enter @enter <object> [= <string>] Sets the Enter attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @oenter @oenter <object> [= <string>] Sets the OEnter attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @aenter @aenter <object> [= <string>] Sets the AEnter attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @oxenter @oxenter <object> [= <string>] Sets the OXEnter attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @leave @leave <object> [= <string>] Sets the Leave attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @oleave @oleave <object> [= <string>] Sets the OLeave attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @aleave @aleave <object> [= <string>] Sets the ALeave attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @oxleave @oxleave <object> [= <string>] Sets the OXLeave attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @kill @kill <object> [= <string>] Sets the Kill attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @okill @okill <object> [= <string>] Sets the OKill attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @akill @akill <object> [= <string>] Sets the AKill attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @killfail @killfail <object> [= <string>] Sets the KillFail attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @okillfail @okillfail <object> [= <string>] Sets the OKillFail attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @akillfail @akillfail <object> [= <string>] Sets the AKillFail attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @oteleport @oteleport <object> [= <string>] Sets the OTeleport attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @oxteleport @oxteleport <object> [= <string>] Sets the OXTeleport attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @ateleport @ateleport <object> [= <string>] Sets the ATeleport attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @sex @sex <object> [= <string>] Sets the Sex attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @efail @efail <object> [= <string>] Sets the EnterFail attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @oefail @oefail <object> [= <string>] Sets the OEnterFail attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @aefail @aefail <object> [= <string>] Sets the AEnterFail attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @aprefix @aprefix <object> [= <string>] Sets the AudiblePrefix attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @afilter @afilter <object> [= <string>] Sets the AudibleFilter attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @use @use <object> [= <string>] Sets the Use attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @ouse @ouse <object> [= <string>] Sets the OUse attrubute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @ause @ause <object> [= <string>] Sets the AUse attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @runout @runout <object> [= <string>] Sets the Runout attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @pay @pay <object> [= <string>] Sets the Pay attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @opay @opay <object> [= <string>] Sets the OPay attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @apay @apay <object> [= <string>] Sets the APay attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & @startup @startup <object> [= <string>] Sets the Startup attribute on the specified object. If no string argument is given, the attribute is removed. @@@@ & exit matching EXIT MATCHING Where a player types something, and it's not an '@' command, exits are checked to see if they match what the player typed. Exits don't have to be in the same room as the player any longer. Order of exit matching: a. EXTERNAL exits carried by the player. b. EXTERNAL exits on objects carried by the player. c. Exits attached to the player's location. If the location is a room, any exit is matched, otherwise only non-EXTERNAL exits are matched. d. EXTERNAL exits attached to objects (not players) in the player's location. e. If the player's location isn't a room, the root parent room (usually #0) is checked for matching exits. If they are in a room, its location is checked, and then the location of that, etc., all the way back to the root room. Only non-EXTERNAL exits are matched by this method. Note that any exits that are matched in a group will override any (potential) matches in the next group(s). @@@@ & matching MATCHING Exits are matched in the following order within most commands: a. Exits carried by the player. b. EXTERNAL exits on objects (not players) carried by the player. c. Exits attached to the player's location, which aren't EXTERNAL. d. EXTERNAL exits attached to objects (not players) in the player's location. Objects are matched in the following order within most commands: a. Objects carried by the player. b. Objects in the player's location. c. Players in the player's location. Some commands will go ahead and try to match an exit using the exit matching rules, in the case of no matching object. See MATCHING2 for more information. @@@@ & matching2 MATCHING Many commands will also allow objects to be specified as "me" (referring to the executing player or object), "here" (referring to the player's location), and sometimes "home", referring to the player's home. Objects can always be specified as "#<number>", in the case of an ambiguous name match that won't resolve. Wizards can also use "*<player>" to match any player, even abbreviating <player> if they're currently logged in, or nearby. The later form can be used by anyone when locking things. @@@@ & being killed BEING KILLED If you are killed, you return to your home, and all of your objects return to their homes. You may also receive a small amount of money as compensation. @@@@ & drop-tos DROP-TOs A `drop to' is set when the @LINK command is used on a room; the object the room is linked to becomes the location of anything dropped in that room. If the room is also set STICKY, all of its contents will be sent to its drop to location when the last player leaves. If an object is dropped in a room, but it won't immediately end up in that room because of a drop to, the room's Drop, ODrop, and ADrop attributes are triggered. @@@@ & failure FAILURE You fail do something whenever you don't pass an object's lock. For instance, you fail to use a thing when you can't pick it up, you fail to use an exit when you can't go through it, and you fail to use a room when you can't look around. All of these instances trigger the Fail, OFail, and AFail attributes. Failing to pass other locks can trigger other attributes, for example failing to enter an object triggers it's EnterFail, OEnterFail, and AEnterFail attributes. @@@@ & success SUCCESS You successfully do something whenever you pass an object's lock. For instance, you successfully use a thing when you pick it up, you successfully use an exit when you go through it, and you successfully use a room when you look around. All of these instances trigger the Success, OSuccess, and ASuccess attributes. Successfully passing other locks can trigger other attributes, for example successfully entering an object triggers it's Enter, OEnter, and AEnter attributes. @@@@ & gender GENDER This is set with the Sex attribute, using the @SEX or @SET commands, defaulting to unassigned. If a player's gender is set, pronoun substitutions will use the appropiate pronoun for the object or player. See also: SUBSTITUTIONS. @@@@ & global switches GLOBAL SWITCHES In addition to the command switches available with each command, there is also a set of global switches. These switches are available for every command (though a few commands may not be affected by a particular global switch). The current global switches are: /quiet Prevents the sending of many `noisy' messages. This doesn't neccessarily work as it does in other systems. See QUIET. @@@@ & switches SWITCHES In the help entry for various commands, a set of `switches' will often be listed. If specified, these will cause the command to act in a variety ways, usually different from how it acts by default. Switches are specified directly after the command name, seperated by forward-slash ('/'). For example: @create/quiet Some object The example would (or perhaps wouldn't) create "Some object" without displaying any messages. See also: GLOBAL SWITCHES @@@@ & here HERE The word `here' can be used to refer to your location. This is used within most commands that match objects. For instance, to set the Description of the room you are in, if you control it, you could use: @describe here = This is a nice little room. @@@@ & me ME The word `me' can be used to refer to yourself. This is used within most commands that match objects. For instance, to set your Description, you could use: @describe me = A little green man from Mars. If you're new, see NEW (type "help new"). @@@@ & new NEW As a new player, there are a few things you should do: First, be sure to @LOCK yourself so that other people can't carry you away. You should then set your Description with the @describe command, so that other players will know what you look like. Lastly, you should set your gender with @SEX or @SET, so that the proper pronouns are used for you. For example, type: @lock me = me This locks yourself to yourself. @describe me = <what you look like> This will set your Description. @sex me = MALE This will set your gender. FEMALE and NEUTER are also common choices. @@@@ & substitutions SUBSTITUTIONS Attributes and other strings may contain %-subsitutions, some of which evaluate to gender specific pronouns if the player's gender is set. They are: %s (subjective): Name, he, she, it. %o (objective): Name, him, her, it. %p (possessive): Name's, his, her, its. %n (player name): Name. %a (absolute possessive): Name's, his, hers, its. %r (reflexive): Name, himself, herself, itself. %l (new line): Inserts a newline. %t (tab): Inserts a tab character. %! (player number): Inserts the number of the object executing. %# (cause number): Inserts the number of the object causing this to be executed. See SUBSTITUTIONS2 for more information. @@@@ & substitutions2 SUBSTITUTIONS %<num>: Inserts the specified argument number. (Arguments can be given to @TRIGGER calls, and user-defined $-commands.) If you need a '%', use '%%'. If you wish the substitution to be capitalized, use a capital letter for the substitution, like %S, %P, and so on. Note that all substitutions may be overridden by attributes on the player that have the same name, causing the text of the attribute to be substituted in, rather than the standard value for the substitution. See also: @TRIGGER, $-COMMANDS @@@@ & $-commands & $commands $-COMMANDS `$-commands' are a type of user-defined command, using attributes. These can be defined by an attribute formatted like this: $<string>:<action> Whenever something matching the specified string is typed, the specified action (as in, commands) is executed by the object which contains the attribute. These commands are only used when no built-in commands or exits can be matched with what has been typed. See $-COMMANDS2 for more information. @@@@ & $-commands2 & $commands2 $-COMMANDS The matching order for `$-commands' is similar to the matching order for exits. First the player is checked, then their contents. Next, their location is checked (if it's a room), and then the location's contents. Failing those, enclosing room is checked, then its contents, following the room's location all the way back to the Root Room. Only the first matched command will be run, and no others. In order to use a `$-command' on an object, it must not be set either HALT or NOCHECK, and you must pass it's UseLock. See also: NOCHECK @@@@ & regular expressions REGULAR EXPRESSIONS Several commands in TeenyMUD allow arguments to contain regular expressions. These are standard splat ('*') sign expressions; for instance, the expression "A*Z" will match any string beginning with the letter 'A', and ending with the letter 'Z'. @@@@ & player aliases PLAYER ALIASES Players (and only players) may have an optional "alias". This is equivalent to having a second name, which is matched exactly like the player's real name. For exaple, if player `VivaVoce' has an alias of `VV', either of the commands look VivaVoce or look VV would look at the same player, `VivaVoce'. @@@@ & example EXAMPLE Bishop_III is a new player. He initializes his character by typing: @desc me=Bishop III at first glance looks normal, perhaps a bit pale. @sex me=male Bishop_III desires to carry his program with him. He does: @create A floppy disk @desc disk=The 3 1/2" floppy contains an AutoCAD program. @lock disk=me @succ disk=You pick up the disk carefully. @osucc disk=picks up the floppy disk. @fail disk=You're not allowed to steal Bishop_III's floppy disk. @ofail disk=tries to steal Bishop_III's floppy disk. @drop disk=You carefully set the disk down. @odrop disk=tosses the disk aside. Bishop_III has dropped his disk and can't find it. He locates it by: @find floppy disk or list all his objects and rooms by: @find See EXAMPLE2 for more information. @@@@ & example2 Bishop_III has acquired a free link in a LINK_OK room. He sees an unlinked exit called "404" in Hallway(#700RL). He can make a home by creating a room and linking the free exit to it: @dig The Bishop's Room > Room The Bishop's Room dug with number #738. @link 404=#738 @desc 404=This door leads to Bishop_III's room. @osucc 404=enters Bishop_III's room, number 404. @odrop 404=enters from the Hallway. Then he enters the new room and creates the backlink, very important: go 404 > The Bishop's Room(#738R) @open out;exit;leave;w;west=#700 @desc out=This exit leads out to the Hallway. @osucc out=leaves the room. @odrop out=steps out of Bishop_III's room. @desc here=This is a spartan chamber with a minicomputer running CAD. He makes the exit 'out' visible by setting the OBVIOUS flag: @set out=OBVIOUS He sets his home here by doing: @link me=here See EXAMPLE3 for more information. @@@@ & example3 EXAMPLE Bishop_III wants to create a fake exit in his room to simulate a command: @open type;type on computer;computer;use computer=here @lock type=me&!me @desc type=You see a battered Sun 3/60. @fail type=You hit a few keys on the keyboard and the display flickers. @ofail type=does incredible things with AutoCAD. You are amazed. Later, he creates a better computer: @create A shiny new RS/6000 @desc shiny=It's made by IBM out of plastic and silicon. He decides only he, Xibo, or someone holding the floppy disk can take it: @lock shiny=me|*xibo|floppy disk @fail shiny=You are denied access. @ofail shiny=growls at the computer. @succ shiny=You heft the computer onto your back. @osucc shiny=lifts up the computer. @drop shiny=tud! @odrop shiny=drops the computer onto the ground with a *tud!* Then he learns it requires AIX to run, and destroys it: @rec shiny new RS/6000 See EXAMPLE4 for more information. @@@@ & example4 EXAMPLE Bishop_III wishes to extend his place, adding a bedroom to his main room. @dig Bedroom > Room Bedroom dug with number #742. Bishop_III's main room is #738. Starting in his main room, he does the following commands to make the Bedroom appear to the north: @open north;n=#742 @desc north=You see the bedroom. @succ north=You enter the bedroom. @osucc north=enters B3's bedroom. @odrop north=arrives from the main room to the south. @set north=OBVIOUS (this makes the exit visible) go north > Bedroom(#742R) @desc here=This is Bishop_III's bedroom. It is littered with blankets. @open south;s=#738 @desc south=This door leads back to the main room. @succ south=You stumble out of the bedroom. @osucc south=leaves the room, heading southward. @odrop south=arrives from the bedroom to the north. @set south=OBVIOUS Bishop_III now has two well-described exits linking the bedroom in. He then creates a more vivid description of the bedroom itself. @@@@ & primitives PRIMITIVES The following primitives are available. Help is available for each one, if the primitive name is suffixed by the word 'primitive'. ABS ACOS ADD ASIN ATAN CEIL CNVTIME CONTENTS CONTROLS COS CREATESTAMP CRYPT CTIME DESTS DIV DROPTO E EXITS EXP EXPR FIRST FLAGS FLOOR FORMAT GETATTR GETLOCK GETVAR HOME IF LAST LN LOC LOG LOWCASE MAX MID MIN MOD MUL NAME OWNER PARENT PENNIES PI POWER QUOTA RAND REST RLOC ROOMS ROUND SETVAR SIN SQRT For more information, see PRIMITIVES2. @@@@ & primitives2 PRIMITIVES STRCAT STRCMP STRLEN STRMATCH STRNCMP STRPREFIX SUB SWAPCASE TAN TIME TIMESTAMP TRUNC TYPE UPCASE USES WORDS WRDMATCH Primitives are only accessable from within square bracket ("[]") style substitutions. @@@@ & getattr primitive GETATTR <object> <attribute> Retrieves the value of the specified attribute from the specified object. The executing player must either control the object, or the object must be set VISUAL. Object must be specified by number. @@@@ & getlock primitive GETLOCK <object> <attribute> Retrieves the value of the specified lock attribute from the specified object. The executing player must either control the object, or the object must be set VISUAL. Object must be specified by number. @@@@ & contents primitive CONTENTS <object> Returns a list of the contents of the specified object. The executing player must either control the object, it be set VISUAL, or be nearby. Object must be specified by number. @@@@ & exits primitive EXITS <object> Returns a list of the exits on the specified object. The executing player must either control the object, it be set VISUAL, or be nearby. Object must be specified by number. Only exits that the player controls, or set OBVIOUS are listed. @@@@ & rooms primitive ROOMS <room> Returns a list of rooms contained by the specified room. The executing player must either control the room, or it be set ABODE. Room must be specified by number. Only rooms that the player controls, or set ABODE are listed. @@@@ & owner primitive OWNER <object> Returns the owner of the specified object. Object must be specified by number. @@@@ & quota primitive QUOTA <object> Returns the quota of the specified object. The executing player must either control the object, or it be set VISUAL. Object must be specified by number. @@@@ & pennies primitive PENNIES <object> Returns the pennies of the specified object. The executing player must either control the object, or it be set VISUAL. Object must be specified by number. @@@@ & loc primitive LOC <object> Returns the location of the specified object. If the object is set HIDDEN, the executing player must either control the object, or it be nearby. Object must be specified by number. @@@@ & rloc primitive RLOC <object> Returns the real (as determined by room) location of the specified object. If the object is set HIDDEN, the executing player must either control the object, or it be nearby. Object must be specified by number. @@@@ & controls primitive CONTROLS <object1> <object2> Returns 1 if object1 controls object2, 0 otherwise. @@@@ & dropto primitive DROPTO <room> Returns the drop-to destination of the specified room. The executing player must either control the room, or it be set VISUAL. Room must be specified by number. @@@@ & home primitive HOME <object> Returns the home of the specified object. The executing player must either control the object, or it be set VISUAL. Object must be specified by number. @@@@ & dests primitive DESTS <exit> Returns a list of the destinations of the specified exit. The executing player must either control the object, or it be set VISUAL. Exit must be specified by number. @@@@ & timestamp primitive TIMESTAMP <object> Returns the timestamp of the specified object. The executing player must either control the object, or it be set VISUAL. Object must be specified by number. @@@@ & createstamp primitive CREATESTAMP <object> Returns the createstamp of the specified object. The executing player must either control the object, or it be set VISUAL. Object must be specified by number. @@@@ & parent primitive PARENT <object> Returns the parent of the specified object. The executing player must either control the object, or it be set VISUAL. Object must be specified by number. @@@@ & uses primitive USES <object> Returns the number of uses remaining for the specified object. The executing player must either control the object, or it be set VISUAL. Object must be specified by number. @@@@ & name primitive NAME <object> Returns the name of the specified object. @@@@ & flags primitive FLAGS <object> Returns a string containing the set flags of the specified object, following normal flag viewing permissions. @@@@ & type primitive TYPE <object> Returns a string reflecting the type of the specified object. @@@@ & rand primitive RAND <limit> Returns a pseudo-random number between 0 and the specified limit. @@@@ & abs primitive ABS <number> Returns the absolute value of the specified (floating point) number. @@@@ & sgrt primitive SQRT <number> Returns the square root of the specified (floating point) number. @@@@ & add primitive ADD <number1> <number2> [<number3> <numberN>] Returns the sum off all its specified (floating point) arguments. @@@@ & sub primitive SUB <number1> <number2> Returns the difference of the specified (floating point) arguments. @@@@ & mul primitive MUL <number1> <number2> [<number3> <numberN>] Returns the product of the specified (floating point) arguments. @@@@ & floor primitive FLOOR <number> Returns the floor of the specified (floating point) number. @@@@ & format primitive FORMAT <format> [<argument1> <argument2> <argumentN>] Performs formatting similar to that done by the C standard library routine ``printf''. The format string contains formatting directives, consisting of special % codes (all standard ``printf'' % codes are supported), which define how the specified argument(s) will be formatted in the return string. See also: The C Programming Language @@@@ & ceil primitive CEIL <number> Returns the ceiling of the specified (floating point) number. @@@@ & round primitive ROUND <number> <places> Rounds the specified floating point number off at the specified number of decimal places. @@@@ & trunc primitive TRUNC <number> Truncates the specified floating point number to an integer. @@@@ & div primitive DIV <number1> <number2> Returns the divisor of the two specified (floating point) numbers. @@@@ & mod primitive MOD <number1> <number2> Returns the modulous of the two specified (floating point) numbers. @@@@ & pi primitive PI Returns pi to 9 decimal places. @@@@ & e primitive E Returns E to 9 decimal places. @@@@ & sin primitive SIN <number> Returns the sine of the specified (floating point) number. @@@@ & cos primitive COS <number> Returns the cosine of the specified (floating point) number. @@@@ & tan primitive TAN <number> Returns the tangent of the specified (floating point) number. @@@@ & exp primitive EXP <number> Returns the exponential function e to the specified (floating point) number. @@@@ & power primitive POWER <number1> <number2> Returns the value of the specified (floating point) number to the power of the second specified (floating point) number. @@@@ & ln primitive LN <number> Returns the natural logarithm of the specified (floating point) number. @@@@ & log primitive LOG <number> Returns the natural logarithm of the specified (floating point) number to base 10. @@@@ & asin primitive ASIN <number> Returns the arc sine of the specified (floating point) number. @@@@ & acos primitive ACOS <number> Returns the arc cosine of the specified (floating point) number. @@@@ & atan primitive ATAN <number> Returns the arc tangent of the specified (floating point) number. @@@@ & min primitive MIN <number1> <number2> [<number3> <numberN>] Returns the smallest of all its (integer) arguments. @@@@ & max primitive MAX <number1> <number2> [<number3> <numberN>] Returns the largest of all it's (integer) arguments. @@@@ & expr primitive EXPR <string> Returns the (integer) value of the specified expression. The expression can not contain floating point numbers, but does otherwise support everything the C Programming Language does. A future release will support floating point expressions. @@@@ & if primitive IF <value> [then] <return1> [else] <return2> If the specified value is true (positive), then the return1 argument is returned, else the return2 argument is returned. @@@@ & setvar primitive SETVAR <variable> <value> Sets the specified variable to the specified value. Returns the value assigned. @@@@ & getvar primitive GETVAR <variable> Returns the value assigned to the specified variable. @@@@ & time primitive TIME Returns the current time, in seconds. @@@@ & ctime primitive CTIME <time> Returns the ASCII form of the specified time value. @@@@ & cnvtime primitive CNVTIME <string> Returns the time value, in seconds, of the specified ASCII string. @@@@ & mid primitive MID <string> <position> <length> Returns the length of specified number of characters at the specified position, within the specified string. @@@@ & first primitive FIRST <string> [<separator>] Returns the first word in the specified string, using spaces to delimit words. If a separator is specified, it is used instead of spaces. @@@@ & rest primitive REST <string> [<separator>] Returns everything after the first word in the specified string, using spaces to delimit words. If a separator is specified, it is used instead of spaces. @@@@ & last primitive LAST <string> [<separator>] Returns the last word of the specified string, using spaces to delimit words. If a separator is specified, it is used instead of spaces. @@@@ & words primitive WORDS <string> [<separator>] Returns a count of the words within the specified string, using spaces to delimit words. If a separator is specified, it is used instead of spaces. @@@@ & strlen primitive STRLEN <string> Returns the length, in characters, of the specified string. @@@@ & strcmp primitive STRCMP <string1> <string2> Returns positive if the strings match, zero or negative if they do not. Strings are not case sensitive. @@@@ & strmatch primitive STRMATCH <regexp> <string> Returns positive if the specified string matches the specified regular expression. @@@@ & strprefix primitive STRPREFIX <string1> <string2> Returns positive if the first specified string is a prefix of the second. @@@@ & strncmp primitive STRNCMP <string1> <string2> <length> Returns positive if the strings match up to the specified length, zero or negative if they do not. Strings are not case sensitive. @@@@ & wrdmatch primitive WRDMATCH <regexp> <string> [<separator>] Returns true if a word within the specified string matches the specified regular expression. If a separator is specified, it is used to delimit words, otherwise spaces are used. @@@@ & strcat primitive STRCAT <string1> <string2> [<string3> <stringN>] Returns all of its arguments, concatenated together, with a space between each one. @@@@ & lowcase primitive LOWCASE <string1> [<string2> <stringN>] Returns all of it's arguments, concatenated together as per STRCAT, with the case of all letters converted to lower. @@@@ & swapcase primitive SWAPCASE <string1> [<string2> <stringN>] Returns all of it's arguments, concatenated together as per STRCAT, with the case of all letters swapped around. @@@@ & upcase primitive UPCASE <string1> [<string2> <stringN>] Returns all of it's arguments, concatenated together as per STRCAT, with the case of all letters converted to upper. @@@@ & crypt primitive CRYPT <string> Returns an encrypted version of the specified string. @@@@