These docs were written with the help of Three, who wrote probably the best library I've seen. Contained herein are her docs, and some examples that I've written. -- Chrys Three's Unabridged Dictionary of Commands ----------------------------------------- DROP drop . Drops . Dropping a thing in the temple sacrifices it (See SACRIFICING in the encyclopedia). Otherwise, a dropped thing is relocated to the current room, unless its STICKY flag is set (See STICKY), or the room has a drop-to (See DROP-TOS). Unlinked exits can only be dropped in rooms you control. 'throw' is the same as 'drop'. EXAMINE examine [object]. Displays all available information about . can be specified as or #, or as 'me' or 'here'. You must control the object to examine it. Wizards can examine objects in other rooms using # or *. GET get . Picks up . can be a thing or an unlinked exit. 'take' is the same as 'get'. GIVE give =. Gives player the specified number of pennies. The only thing you can give is pennies. You can't give someone pennies if their new total would be greater than 10000. Wizards can give as many pennies as they wish, even negative amounts, without affecting their own supply, and can give pennies to things to change their sacrifice values. GOTO go[to] ; go[to] home. Goes in the specified direction. 'go home' is a special command that returns you to your starting location. The word 'go' may be omitted. 'move' is the same as 'go'. GRIPE gripe . Sends to the system maintainer. HELP help. This displays a short help message. INVENTORY inventory. Lists what you are carrying. This can usually be abbreviated to inv. KILL kill [=]. Attempts to kill the specified player. Killing costs either or 10 pennies, whichever is greater. The probability of success is percent. Spending 100 pennies always works (except against wizards, who can never be killed). Players cannot be killed in rooms which have been set HAVEN. (see HAVEN) LOOK look [object]. Displays the description of , or the room you're in if you don't specify one. can be a thing, player, exit, or room, specified as or # or 'me' or 'here'. 'read' is the same as 'look'. Wizards can look at objects in other rooms using # or *. MOVE See GO. NEWS news. Displays the current news file for the game. Must be typed in full. PAGE page . This tells a player that you are looking for them. They will get a message telling them your name and location. This costs 1 penny. If a player is set HAVEN, you cannot page them, and they will not be notified that you tried. QUIT QUIT. Log out and leave the game. Must be in all capitals. READ See LOOK. ROB rob . Attempts to steal one penny from . The only thing you can rob are pennies. SAY say . Says out loud. You can also use '"'. Another command is ':'. This is used for actions, ex. if your name was Igor, and you typed ':falls down.', everyone would see "Igor falls down." See also WHISPER. SCORE score. Displays how many pennies you are carrying. TAKE See GET. THROW See DROP. WHISPER whisper =. Whispers the message to the named person, if they are in the same room as you. No one else can see the message. Wizards can whisper *= to whisper to players in other rooms. WHO WHO []. List the name of every player currently logged in, and how long they have been inactive. If given a player name, it displays only that name and idle time. Must be in all capitals. There are two player flags that pertain to the formatting of WHO, REVERSE_WHO and TABULAR_WHO. (See their entries under FLAGS). @BOOT @boot . Disconnects the player from the game. Only Wizards can use this command. @CHOWN @chown =. Changes the ownership of to . Only wizards may use this command. Players can't be @chowned; they always own themselves. @CREATE @create [=]. Creates a thing with the specified name. Creation costs either pennies or 10 pennies, whichever is greater. The value of a thing is proportional to its cost. To be exact, value=(cost/5)-1. @DESCRIBE @describe [=l. can be a thing, player, exit, or room, specified as or # or 'me' or 'here'. This sets the description a player sees when they use the command 'look '. Without a description argument, it clears the message. It can be abbreviated @desc. @DIG @dig . Creates a new room with the specified name and displays its number. This costs 10 pennies. @DUMP @dump. Only wizards may use this command. Saves the database from memory to disk. Automatically occurs every hour, and when @shutdown is used. @FAIL @fail [=]. can be a thing, player, exit, or room, specified as or # or 'me' or 'here'. Sets the fail message for . The message is displayed when a player fails to use . Without a message argument, it clears the message. See also @OFAIL. @FIND @find [name]. Displays the name and number of every room, thing, or player that you control whose name matches . Because the command is computationally expensive, this costs 1 penny. @FORCE @force =. Only wizards may use this command. Forces the game to act as though had entered . @LINK @link =; @link =here; @link |=home. Links to room specified by . For things and players, sets the home room (See HOMES). For rooms, sets the drop-to room (See DROP-TOS). For exits, sets the target room; exits must be unlinked, and you must control the target room unless its LINK_OK flag is set. Linking an exit costs 1 penny. If the exit was owned by someone else, the former owner is reimbursed 1 penny. Wizards can @link objects in other rooms using # or *. @LOCK @lock =. Locks to a specific key(s). can be specified as or #, or as 'me' or 'here'. Boolean expressions are allowed, using '&' (and), '|' (or), '!' (not), and parentheses ('(' and ')') for grouping. To lock to a player, prefix their name with '*' (ex. '*Igor'). See the example section at the end of these docs. @NAME @name = []. Changes the name of . can be a thing, player, exit, or room, specified as or # or 'me' or 'here'. For a player, it requires the player's password. @NEWPASSWORD @newpassword [=]. Only wizards may use this command. Changes 's password, informing that you changed it. Must be typed in full. @OFAIL @ofail [=]. The @ofail message, prefixed by the player's name, is shown to others when the player fails to use . Without a message argument, it clears the message. can be specified as or #, or as 'me' or 'here'. See also @FAIL. @OPEN @open [;]* [=]. Creates an exit in the specified direction(s). If is specified, it is linked to that room. Otherwise, it is created unlinked. You or anyone else may use the '@link' command to specify where the unlinked exit leads. Opening an exit costs 1 penny. If you specify , linking costs 1 more penny. @OSUCCESS @osuccess [=]. The @osuccess message, prefixed by the player's name, is shown to others when the player successfully uses . Without a message argument, it clears the @osuccess message. It can be abbreviated @osucc. can be specified as or #, or as 'me' or 'here'. See also @SUCCESS. @PASSWORD @password =. This changes your password. @SET @set =; @set =!. Sets (or, with '!', unsets) on . See FLAGS in the encyclopedia. @SHUTDOWN @shutdown. Only wizards may use this command. Shuts down the game. Must be typed in full. @STATS @stats [player]. Display the number of objects in the game. For wizards, also lists a breakdown by object types. Wizards can supply a player name to count only objects owned by that player. @SUCCESS @success [=]. Sets the success message for . The message is displayed when a player successfully uses . Without a message argument, it clears the message. It can be abbreviated @succ. can be specified as or #, or as 'me' or 'here'. See also @OSUCCESS. @TELEPORT @teleport [=] . Teleports to . must be a thing. (Wizards can also teleport players.) You must be able to link to the destination, and either control the object or its current location. You can only teleport objects into a room, not into someone's inventory. If the target room has a drop-to, will go to the drop-to room instead. Wizards can teleport things into players' inventories. @TOAD @toad . Only wizards may use this command. Turns the player into a slimy toad, destroying their character. Must be typed in full. @UNLINK @unlink ; @unlink here. Removes the link on the exit in the specified direction, or removes the drop-to on the room. Unlinked exits may be picked up and dropped elsewhere. Be careful, anyone can relink an unlinked exit, becoming its new owner (but you will be reimbursed your 1 penny). See @LINK. @UNLOCK @unlock . Removes the lock on . See @LOCK. @WALL @wall . Only wizards may use this command. Shouts something to every player connected. Must be typed in full. Three's Encyclopedia of the TinyWorld ------------------------------------- BEING KILLED Getting killed is no big deal. If you are killed, you return to your home, and all things you carry return to their homes. You also collect 50 pennies in insurance money (unless you have >= 10000 pennies). See MONEY. BOGUS COMMANDS Bogus commands can be made using exits. For example, to make a 'sit' command, one could "@open sit", then "@link sit=here" (because unlinked exits can be stolen), "@lock sit=me&!me" (impossible to be both at once, therefore always fails), and "@fail sit=You sit on the chair."; "@ofail=sits on the chair.". Since nobody can go through it, it always fails. The @fail message is displayed to the player, and the @ofail message (preceded by the player's name) to everyone else. CONTROL There are 3 rules to controlling objects: 1) You control anything you own. 2) A wizard controls everything. 3) Anybody controls an unlinked exit, even if it is locked. Builders should beware of 3, lest their exits be linked or stolen. COSTS Costs: kill: 10p (or more, up to 100p). page: 1p. @dig: 10p. @create: 10p (or more, up to 505p), sacrifice value=(cost/5)-1. @find: 1p. @link: 1p (if you didn't already own it, +1p to the previous owner). @open: 1p (2p if linked at the same time). Wizards don't need money to do anything. DESTROYING Nothing can be destroyed. However, everything can be reused. You can give an object a new name with @name, redescribe it with @describe, and set new success and fail messages for it. Exits can be @unlink'd and picked up and dropped elsewhere, so you can pick up an extra exit and use it in another room. DROP-TOs When the @link command is used on a room, it sets a drop-to location. Any object dropped in the room (if it isn't STICKY) will go to that location. If the room is STICKY, the drop-to will be delayed until the last person in the room has left. FAILURE You fail to use a thing when you cannot take it (because it's lock fails). You fail to use an exit when you cannot go through it (because it's unlinked or locked). You fail to use a person when you fail to rob them. You fail to use a room when you fail to look around (because it's locked). See STRINGS, and in the dictionary, @FAIL and @OFAIL. FLAGS The flags are displayed as letters following an object's ID number. Flags are set with the @set command. The flags are: W(izard), S(ticky), L(ink_OK), D(ark), T(emple), C(hown), H(aven), A(bode), and the gender flags M(ale), F(emale), and N(euter). The WHO list also uses REVERSE_WHO and TABULAR_WHO, but they do not show up in the ID number. Some systems also use B(uilder). See TYPES, GENDER, and individual flag names. WIZARD If a person is WIZARD, they are a wizard, unkillable, subject to fewer restrictions, and able to use wizard commands. It is only meaningful for players. Only another wizard can set this flag. In general, WIZARDs can do anything using # or *. Only player #1 can set and unset the WIZARD flag of other players. No WIZARD can turn their own WIZARD flag off. STICKY If a thing is STICKY, it goes home when dropped (See HOMES). If a room is STICKY, its drop-to is delayed until the last person leaves (See DROP-TOS). Only meaningful for things and rooms. LINK_OK If a room is LINK_OK, anyone can link exits to it (but still not from it). It has no meaning for people, things, or exits. See @LINK in the dictionary. DARK If a room is DARK, then when people besides the owner 'look' there, they only see things they own. If a thing or player is DARK, then "look" does not list that object in the room's Contents:. Only wizards can set players or things dark. TEMPLE If a room is TEMPLE, you can sacrifice things for pennies by dropping them there. It has no meaning for players, things, or exits. Only wizards can set this flag. GENDER @set me=unassigned|male|female|neuter. Default unassigned. If a player's gender is set, %-substitutions will use the appropriate pronoun for that player. Only meaningful for players. See SUBSTITUTIONS. HAVEN @set here=haven;@set me=haven. If a room is HAVEN, you cannot kill in that room. If a player is set HAVEN, he cannot be paged. ABODE @set here=abode. If a room is set ABODE, players can set their homes there, and can set the homes of objects there. (LINK_OK is now used only for exits, and ABODE is for players and objects.) REVERSE_WHO @set me=reverse_who. If this flag is set, the WHO list will be displayed in reverse order, with newest players listed last. This flag can only be set on players. TABULAR_WHO @set me=tabular_who. If this flag is set, the WHO list will be displayed in a tabular form. This flag can only be set on players. GOAL There is no ultimate goal to this game, except to have fun. There are puzzles to solve, scenery to visit, and people to meet. There are no winners or losers, only fellow players. Enjoy. HERE The word 'here' refers to the room you are in. For example, to rename the room you're in (if you control it), you could enter "@name here=". HOMES Every thing or player has a home. This is where things go when sacrificed, players when they go home, or things with the STICKY flag set go when dropped (See STICKY). Homes are set with the @link command. A thing's home defaults to the room where it was created, if you control that room, or your home. You can link an exit to send players home (with their inventory) by "@link =home". Drop-tos can also be set to 'home' (See DROP-TOS). See @LINK. LINKING You can link to a room if you control it, or if it is set LINK_OK or ABODE. Being able to link means you can set the homes of objects or yourself to that room if it is set ABODE, and can set the destination of exits to that room if it is LINK_OK. See LINK_OK and ABODE, and in the dictionary, @LINK. ME The word 'me' refers to yourself. Some things to do when starting out: 1) give yourself a description with "@describe me=", then look at yourself with "look me". 2) prevent anyone else from robbing you with "@lock me=me". 3) set your gender, if you wish it known, with "@set me=male" or "@set me=female" (or "@set me=neuter" to be an 'it'). MONEY Building and some other actions cost money. How to get money: 1) find pennies. 2) sacrifice (drop) things in the temple. 3) get killed. 4) be given money. 5) rob someone. Once you reach 10000 pennies, it becomes difficult to acquire more. See COSTS and SACRIFICING. Wizards don't need money to do anything. ROBBERY When you rob someone, you succeed or fail to use them (See SUCCESS and FAILURE). You can protect yourself from being robbed by entering "@lock me=me" (See ME, and in the dictionary, @LOCK). If you lock yourself to yourself, you can rob yourself and set off your @success and @osuccess messages. Try entering "@osucc me=is goofy." and robbing yourself in a crowd. See ROB in the dictionary. SACRIFICING You sacrifice a thing by dropping it in the temple. Sacrificing an object gives you the value of an object. You can't sacrifice something you own. If you have >= 10000 pennies, all sacrifices are worth only 1 penny. The sacrifice value of a thing is set at creation by "@create frob=cost", by the formula value=(cost/5)-1. Only a wizard can change the value of an object, once created. STRINGS Objects have 6 strings: 1) a name. 2) a description. 3) a success message (seen by the player). 4) a fail message (seen by the player). 5) an osuccess message (seen by others). 6) an ofail message (seen by others). SUBSTITUTIONS @osuccess and @ofail messages may contain %-substitutions, 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's name) = Name. Capitalized pronouns are also available with %S, %O, and %P. If you need a '%', use %%. Ex. '@ofail teapot=burns %p hand on the hot teapot.' See GENDER. SUCCESS You successfully use an object when you take it. You use an exit successfully when you go through it. You successfully use a person successfully when you successfully rob them. You successfully use a room when you look around. See STRINGS, and in the dictionary, @SUCCESS and @OSUCCESS. TYPES OF OBJECTS There are 4 types of objects: things, players, exits, and rooms. The first letter following an object's ID number indicates the type: P(layer), E(xit), R(oom), otherwise, thing. Things are inanimate objects that can be carried. Players are animate objects that can move and carry. Exits are the means by which objects move. Rooms are locations that contain objects and linked exits. Examples -------- Igor is a new player. He sets his description by typing: @desc me=Igor is a ferret with an evil glint in his eye. He has guarded himself from being robbed, and set some fail messages on himself that people will see when they try to rob him. He typed: @lock me=me @fail me=Igor chomps you on the knee with his little sharp teeth. @ofail me=howls in pain as Igor bites them. Now, here is what happens if Murf tries to rob Igor: Murf types: rob igor Murf sees: Igor chomps you on the knee with his little sharp teeth. all else see: Murf howls in pain as Igor bites them. 'them' as a pronoun isn't to specific, and so Igor should do this: @ofail me=howls in pain as Igor bites %o. So if Murf robs Igor, this is what everyone else will see: Murf howls in pain as Igor bites him. This is assuming that Murf did a '@set me=male'. If not, it would have printed: Murf howls in pain as Igor bites Murf. Igor wants to set a message that he will use a lot, so he sets his @osucc: @osucc me=runs around the room nipping at everyone's heels. Now, if he wants to display that message: Igor types: rob me Igor sees: You stole a penny. Igor stole one of your pennies! all else see: Igor runs around the room nipping at everyone's heels. Igor wants to make an object called 'Ferret chow'. He types: @create Ferret Chow @desc Ferret Chow=This is a big bag full of yummy ferret chow. @succ Ferret Chow=You tear into the end of the bag, stuffing yourself. @osucc Ferret Chow=tears into the Ferret Chow bag, eating greedily. Now Igor decides that he wants to be the only one who can pick up the bag. @lock Ferret Chow=me @fail Ferret Chow=It's icky Ferret Chow. It would probably taste gross. @ofail Ferret Chow=decides Ferret Chow is icky. If Igor picks up the bag: Igor types: get Ferret Chow Igor sees: You tear into the end of the bag, stuffing yourself. all else see: Igor tears into the Ferret Chow bag, eating greedily. Igor is now carrying the bag. He must drop it if he wants to see the messages again. If Murf picks up the bag: Murf types: get Ferret Chow Murf sees: It's icky Ferret Chow. It would probably taste gross. all else see: Murf decides Ferret Chow is icky. Because the bag was locked to Igor, Murf cannot get the bag. Igor wants to build a few rooms. He can only build off of a place where he can get a link. He needs to ask around to find one of these if he is just starting to build. Murf is going to give Igor a link named 'n;north'. That means that both 'n' and 'north' activate that exit. Igor digs a room, and links the exit to it. He types: @dig Igor's House At this point, the program will respond "Igor's House created with room number xxxx". We'll pretend it gave the room number as 1234. @link n;north=1234 The program will respond with "Linked." Now Igor sets a few messages on the exit. He types: @desc n=North is Igor's House. @succ n=You crawl into Igor's House. @osucc n=crawls into Igor's House. These messages work just the same way they work on object, like the Ferret Chow. Next, Igor goes in the room, and creates an out exit. Murf has been nice enough to not only give Igor the n;north exit, but to set his room to L(ink_ok). Murf's room number is 623. Igor types 'n' or 'north' to go in the room, then types: @open out;back;s;south=623 The program will respond with "Opened. Trying to link... Linked." Igor now has a south exit back to Murf's room. Murf can now set his room to !link_ok, so no one else can link to it. Igor puts some messages on the south link as well. He decides he wants to describe the room, so he types: @desc here=This is Igor's home. It is a small room, lined with paper shreds. Over in the corner is a small hole. Now Igor wants to dig a small room that the hole connects to. He types: @dig Igor's Hidden Room The program tells him that the room is number 1250. He then types: @open hole=1250 @lock hole=me @desc hole=This is a small hole, just the size of Igor. @fail hole=You can't fit. @ofail hole=can't fit through the hole. @succ hole=You slip into the hole. @osucc hole=slips into the hole. This creates and links the exit called 'hole' to Igor's Hidden Room. He locks the exit to him, so only he can go through the exit. When he uses the exit, the success and osuccess messages will be displayed. When someone else tries to use the exit, the fail and ofail messages will be displayed. Since Igor owned the room that he was linking from, he had to use @open to create the link first. He now types 'hole' to go in the room, and types '@open out=1234' to create and link an exit called 'out' that leads to his House. If Igor wants everyone BUT Murf to be able to go 'hole', he types: @lock hole=!*murf This locks the hole against the player Murf. If he wants a person to be able to go through 'hole' only if they have the bag of Ferret Chow, he types: @lock hole=Ferret Chow If he wants himself to be able to go in the hole, even if he doesn't have the Ferret Chow, he types: @lock hole=Ferret Chow | me If he wants to lock everyone out except for himself and Murf if Murf has the bag of Ferret Chow, he types: @lock hole=(*murf & Ferret Chow) | me You can get more and more complicated with locks this way. Igor is done building his home, and wants to set his home to it, so when he types 'home' he will go there instead of Limbo(#0RDLA). He goes in his house, and types: @link me=here The program will respond with "Home set." Now Igor can go 'home', and QUIT and not worry about his inactive body cluttering up the landscape. Creating whole houses and adventures can be easy if you understand the way the @ commands work. When you build a room, you should have a very thorough description. Every thing listed in the description should be given a bogus exit (see entry) to detail the place. For example, here is the description of a room built by Three. Three's flat(#5400) Red wall-to-wall carpeting covers the floor. A cushy brown leather couch sits across from a wide-screen TV with a VCR and video disc player stacked on top. Escher prints hang on the walls, hilited by track lighting. Papers protrude from a roll-top desk to one side, adjoining an imposing stereo whose controls rival those of 747 cockpits. The kitchen lies north, the foyer south, and the bedroom beyond a short passage east. Contents: Flitterby Award for Comprehensive Building Now, you noticed the desk in the room. A 'look desk' will show: Every drawer and cubby is overflowing with papers, envelopes, flyers, leaflets, folders, booklets, binders, quick reference cards, and other paper products. A Compaq luggable sits in a small canyon of paper. Atop the desk stands a framed photo. Under the desk sits a back stool. Now, since this was done with a exit to create a bogus command, you might try going through the exit, so you will get the fail message. A 'desk' will show: You rummage thru the desk drawers, finding nothing of interest. Here is an examine of the bogus command, to show you how it was done: desk(#5395E) Owner: Three Key: Three(#5370PTF)&!Three(#5370PTF) Pennies: 0 Every drawer and cubby is overflowing with papers, envelopes, flyers, leaflets, folders, booklets, binders, quick reference cards, and other paper products. A Compaq luggable sits in a small canyon of paper. Atop the desk stands a framed photo. Under the desk sits a back stool. Fail: You rummage thru the desk drawers, finding nothing of interest. Ofail: rummages thru the desk drawers. Destination: Three's flat(#5400R) In this way, a highly detailed room can be built, and greatly increase the atmosphere of the place. Take a walk around and look at the place first, before deciding to build. Then sit down and think carefully about what you want to build. Careful planning has made several very interesting places. ---------------- TinyMUCK mods ---------------- This document describes the differences between TinyMUCK and TinyMUD v1.5.2. It is *not* an introduction to TinyMUD, nor a tutorial on TinyMUCK. It is a reference guide to the changes which have been made. The main additions in TinyMUCK are object-local and player-local commands, multi-destination links and player @chown. Object-Local and Player-local Commands ====================================== In order to allow players to do interesting things with objects, TinyMUCK adds the ability to attach 'actions' to them. Actions are much like 'exits' on a room, and in fact use the same type in the database (TYPE_EXIT). In order to use these actions, an object must either be in the room, or in the player's possession. Player-local commands can only be used by the player who owns them. The two new commands, @action and @attach, are used as follows: @action = @attach = @action creates a new action named , and attaches it to . can also be 'here' or 'me'. @attach re-attaches an existing action to a new source object. To get an action to do something, you link it like a regular exit. Notes: Exits and actions are interchangeable, so @action foo=here is equivalent to @open foo. You can no longer 'get' and 'drop' actions. Use @attach foo=me and @attach foo=here, respectively. TinyMUCK Links ============== The @link command in TinyMUCK works a little differently than in TinyMUD. The format is: @link = ... Where can also be an exit name, and are the numbers of the objects to link to. If you @link an action to an object, using that action will summon the indicated object. If someone else is holding the object, it will immediately disappear from their inventory. In the case of an action attached to an object, an object-summon will also send the source object home. To prevent this, set the action STICKY. Room destinations on things and players teleport the player to that room. If TinyMUCK is compiled with #define TELEPORT_TO_PLAYERS, can also be another player, provided that they are LINK_OK. Using this action will cause you to teleport to that player's location. To provide some degree of privacy, that player must also be JUMP_OK for the action to work. The default for new players is !JUMP_OK. Summary: player must be LINK_OK at link-time, and JUMP_OK at use-time. You can also link an action to a room you control (like a regular exit), or another action. The latter I have termed a _meta-link_. Note that meta-links override the locks on all actions below the initial one. A recursive check is performed to make sure that an action destination does not cause a loop. Room or player destinations in actions which are linked to will be ignored in a meta-link. Meta-links can be used, for example, to restore the objects in an adventure to their starting places, or to move objects around in rooms other than the one that the player is in. The JUMP_OK Flag ================ In order to restrict the use of teleport-to-player and teleport- to-room destinations on movable things (like players and objects), TinyMUCK has the JUMP_OK flag. If you create an action on an object or yourself, it will always work in rooms that you own. You can only use these actions in other rooms if the other rooms are JUMP_OK. When new rooms are created, their JUMP_OK flag is set to whatever the player's JUMP_OK flag is. This allows the puzzle builder (for example) to create a set of rooms which are !JUMP_OK, or a social-area-builder to create a set of JUMP_OK rooms. JUMP_OK also serves the purpose (as mentioned above) of stopping players from teleporting to you. Player @chown ============= In TinyMUD, the @chown command allows Wizards to change ownership of objects. In TinyMUCK, the @chown can be used by players to transfer ownership of other players objects to themselves. The object to be transferred must be a THING, it have the CHOWN_OK flag set, and it must be in the player's inventory. The format of the player @chown command is: @chown This allows two things: 1) Players can give each other gifts. 2) Players can trash old objects, and put them in public-accessible places for re-use (until real recycling is implemented). For example, a player might create a note, lock it to the appropriate player, do @set note=CHOWN_OK, and then leave it in their mailbox. The receiving player could then @chown note, transferring ownership to themselves, and use it to reply, or leave it CHOWN_OK and drop it to a junkpile someplace. The #ifdef PLAYER_CHOWN must be used when compiling to allow this feature to be implemented. Miscellaneous ============= #ifdef VERBOSE_EXAMINE This causes the examine command to print a verbose list of the flags on an object (for those who can't remember what PWDLSJ stands for). -------------------------- My own mods These two fields are similar to @succ, @osucc, @fail, and @ofail. When applied to things, it gives the message when a person drops something. When applied to links, the @drop tells the player entering, and the @odrop tells others that he has entered. When applied to people, the @odrop tells others how you died, and the @drop tells the person who killed you how you died. For instance. A thing called "desk" @drop desk=You drop the desk with a sigh. @odrop desk=drops the desk with a sigh. drop desk (you see) You drop the desk with a sigh. (others see) Whoever drops the desk with a sigh. A link/exit. @drop out=You slide down the chute and end up in a dark place. @odrop out=slides down the shute and enters from above, looking surprised. When you enter the room, you see.. You slide down the chute and end up in a dark place. (others see) Whoever slides down the shute and enters from above, looking surprised. For people. @drop me=Whoever drops over, flops, and dies. @odrop me=Whoever drops over, flops, and dies, with blood sprouting from all over. Wizard types, kill Whoever=100 (He sees:) Whoever drops over, flops, and dies. (Everone else except you) Wizard killed Whoever! Whoever drops over, flops, and dies, with blood sprouting from all over. (You yourself will see the usual messages..) 4/21/90 --- Entering beta-test for property lists. Property lists (p-lists) are an extension to objects, players and rooms for TinyMUCK. Each object will now have a p-list that can be checked against in locks and the like. p-lists are basically string pairs, and can be anything. The GENDER flag will now be a part of p-lists instead of being part of the flags. Syntax for setting properties: @set =property:type For instance, @set me=sex:male @set me=hair:red Locks use the same syntax @lock out=me | sex:male Locks check the person's properties and the properties of everything she's carrying at the moment. To unset properties, simply use: @set =property: To remove all properties, type: @set =: Properties stay on until removed, and an object can have as many properties as it likes. Page can now include a message. To include a message with page, just type: page =message. The ABODE and HAVEN flags are optional and may change from game to game depending on the player. Abode is independent from link, so you can set home to here even though it's not link_ok. Examine now shows you the owner of a place if you don't control it. COMMANDS -------- Terminology: + MUCK additon * Wizard only # Restricted with GOD_PRIV B Builder command -- may be restricted P Programmer command -- restricted unless MUCKER_ALL ~ Optional % Special @ACTION [+B] @action =. Creates a new action and attaches it to the thing, room, or player specified. You may only attach actions you control to things you control. Creating an action costs 1 penny. The action can then be linked with the command @LINK. @ATTACH [+B] @attach =. Removes the action from where it was and attaches it to the new source. You must control the action in question. @BOOT [*] @boot . Disconnects a player from the game. If a player is connected more than once it affects the most recent connection. @CHOWN [%] @chown [=]. Changes the ownership of to , or if no player is given, to yourself. If the MUCK is compiled with PLAYER_CHOWN, all players are allowed to take possession of objects, rooms, and actions, provided the CHOWN_OK flag is set. Mortals cannot take ownership of a room unless they are standing in it, and may not take ownership of an object unless they are holding it. Wizards have absolute power over all ownership. @CREATE [B] @create [=]. Creates a new object and places it in your inventory. This costs at least ten pennies. If is specified, you are charged that many pennies, and in return, the object is endowed with a value according to the formula ((cost / 5) - 1). Usually the maximum value of an object is 100 pennies, which would cost 505 pennies to create. @DESCRIBE @describe [=]. Sets the description field of to . If is not specified, the description field is cleared. @DIG [B] @dig [=]. Creates a new room and sets its parent. If no parent is given it defaults to the global environment which is typically room #0. Digging a room costs 10 pennies, and you must be able to link to the parent room if specified. @DROP [+] @drop [=]. Sets the drop field of to . If is not specified, the drop field is cleared. The drop message on an object is displayed when you drop it. On an exit, it is displayed upon entering the destination room. On a player it is displayed to whoever kills them. On a room, it is displayed when an object is dropped there. @DUMP [*] @dump. Saves the database to disk. This is done automatically every hour or so, and after an @shutdown. @EDIT [+P] @edit . Searches for a program and if a match is found, puts the player into edit mode. Programs must be created with @PROG. @FAIL @fail [=]. Sets the fail field of to . If is not specified, the fail field is cleared. @FIND @find []. Searches through the entire database for rooms, things, players, and programs you control, optionally matching their names to if given. This usually costs at least a penny due to the computing power involved. @FORCE [*#] @force =. Causes the game to process as if typed by . With the compile option GOD_PRIV, God cannot be forced by his/her sub-wizards. @LINK @link = [; ; ... ]. Links to , provided you control , and is either controlled by you or linkable. Actions may be linked to more than one thing, specified in a list separated by semi-colons. @LIST @list [=[line1] [-] [line2]]. Lists lines in a program, provided you control it or it is LINK_OK. Zero, one, or two line numbers may be specified, denoting the range of lines to list. If no lines are given, the entire program is listed. @LOCK @lock =. Sets the key for to that specified by . is a full boolean expression, which may contain any of the characters: ! | & ( ). @NAME @name = []. Sets the name field of to . cannot be empty; a null name is illegal. must be supplied to rename a player. Wizards can rename any player but still must include the password. @NEWPASSWORD [*#] @newpassword [=]. Sets the password field of to . If is not specified, the password field is cleared. A player with no password cannot rename him/herself. If GOD_PRIV was defined, nobody can change God's password. @ODROP [+] @odrop [=]. Sets the odrop field of to . If is not specified, the odrop field is cleared. Odrop on an object is displayed prefixed by the player's name when s/he drops that object. On an exit, it is displayed upon a player's arrival to the destination room (or the location of the destination player). On a player, it is displayed after the `name killed victim!' message. On a room, it is displayed when an object is dropped there, prefixed by the object's name. @OFAIL @ofail [=]. Sets the ofail field of to . If is not specified, the ofail field is cleared. @OPEN [B] @open [= [; ; ... ]]. Opens an exit in the current room, optionally attempting to link it simultaneously. Opening an exit costs a penny, and an extra penny to link it, and you must control the room where it is being opened. @OSUCCESS @osucc [=]. Sets the osuccess field of to . If is not specified, the osuccess field is cleared. @OWNED @owned []. Lists everything you own, or Wizards may specify a player argument. This list includes exits, unlike @FIND. @PASSWORD @password =. Change your password. @PCREATE [*#~] @pcreate =. This command is only used under the compile option REGISTRATION. Create a new player named with . @PROG [+P] @prog . Create a new program, or enter edit mode on an existing one. See @EDIT and Programmer's Reference. @RECYCLE [+~] @recycle . Destroy an object and remove all references to it within the database. The object is then added to a free list, and newly created objects are assigned from the pool of recycled objects first. You *must* own the object being recycled, even wizards must use the @chown command to recycle someone else's belongings. @SET @set = [!] -or- @set = : [ ] -or- @set = : @set does one of three things on TinyMUCK, it can modify flags, add properties to an object, or remove properties from an object. Using the first format, you may set flags, which are: WIZARD, LINK_OK, DARK [DEBUG], FILTER, STICKY [SETUID], or JUMP_OK. Optional flags which may or may not be on a given site are: BUILDER, CHOWN_OK, HAVEN, ABODE, or MUCKER. The second format sets on to , or if is not given, removes . The third format removes all properties from an object. @SHUTDOWN [*] @shutdown. Dumps the database and shuts the game down. @STATS @stats []. For mortal players, returns the highest number in the database, which includes garbage that has been generated with @recycle. For Wizards, gives this number as well as a breakdown of each type of object: rooms, exits, things, programs, players, and garbage. Wizards may also specify which returns a similar display limited to the possessions of . @SUCCESS @succ [=]. Sets the success field of to . If is not specified, the success field is cleared. @TELEPORT @teleport [=]. Moves to , if is not given, moves you to . Wizards may teleport anything to anywhere, provided it makes sense, and mortals are allowed to do two things: teleport rooms to change their parent fields, and the may teleport things to a room they can link to, provided they control either the thing or its location. @TOAD [*] @toad . Turns into a slimy toad, destroying his/her character and disconnecting him/her from the game. @TRACE [+] @trace [=]. Starts with and traces all location fields, until the global-environment room is reached or the optional is specified. This is generally useful for finding which rooms are parents in your heirarchy. If you cannot link to a particular location its name is replaced by stars ***. @UNLINK [B] @unlink . Removes any and all destination fields of the specified . @UNLOCK @unlock . Removes any and all locks on the specified . @WALL [*] @wall . Shouts a message to every player in the game. DROP drop . Drops the if you are holding it. It moves the object to the room you are in, unless its STICKY flag is set, or the room has a drop-to. Programs are much like objects but are not affected by room droptos or STICKY flags. EXAMINE examine . If you control , a complete breakdown of all fields, flags, properties, etc. associated with the object is displayed. Program-executing fields are displayed as their true text, rather than executing the program in question. If you do not control , however, it prints the owner of the object in question, and, again, displays the true text of the description. GET get . Attempts to pick up . The lock on is checked for a success (true), and the normal path of success/fail is then taken. On success the object is placed in your inventory. GIVE give =. Gives pennies from your supply to . Mortals may only give positive amounts and may not cause a player to have more than 10000 pennies. Wizards do not affect their penny supplies by giving to others, and may also give pennies to objects, changing that object's value. GOTO goto . Attempts to find an exit by that name. Goto is unnecessary and much like LET in Basic (read: silly). GRIPE gripe . Sends to the system maintainer. HELP help. Displays the help file. INVENTORY inventory. Lists the objects you are carrying, as well as how many pennies you have. KILL kill [=]. A successful kill sends the player home, sends all objects in the player's inventory to their respective homes. The probability of killing the player is percent. Spending 100 pennies always works except against Wizards who cannot be killed. Players cannot be killed in rooms which have the HAVEN flag set. LOOK look . Looks around at the current room, or at if specified. For players, displays their description and inventory, for things, their description, and for rooms, their name, description, succ/fail message, and contents. Also triggers osucc/ofail messages on rooms. Programs are triggered accordingly on desc/succ/fail fields. MOVE move . See GOTO. MAN [+] man. Displays the programmer's manual or a quick reference. NEWS news. Displays the game's news file. OUTPUTPREFIX OUTPUTPREFIX [string]. Must be in all capitals, and must be typed in full. This prints the given string before the output of every command. OUTPUTSUFFIX [string]. Must be in all capitals, and must be typed in full. This prints the given string after the output of every command. PAGE page [=]. Costs a penny, and sends your name and location to , optionally passing them as well. A player who is set HAVEN cannot be paged, and will not be notified that you tried. POSE or : :. Displays your name, followed by . PUT put . See DROP. QUIT QUIT. Logs you off the game. Must be typed all capitals. READ read []. Synonym for LOOK. ROB rob . Attempts to steal a penny from . The lock on is checked, and you succeed or fail appropriately. If you succeed, the message `You stole a penny.' is always displayed. SAY or " ". Displays the message, says, "". SCORE score. Displays how many pennies you have. TAKE take . Synonym for GET. THROW throw . Synonym for DROP. WHISPER whisper =. Gives a private message, undetectable by others in the same room. WHO WHO []. List names of the players logged in, and their idle times. If is specified, only names that start with are displayed. Must be typed in all capitals.