page
HelpRec(syntax='page <recipient> with <message>', desc='\nYou can use the page command to send a message to another player,\nanywhere in the game.\n\nIf you don\'t wish to receive page messages, use this command:\n\n    set me.nopage = 1\n\nExample:\n\n    page Tim with "Help!  I\'m hopelessly confused!"', initial=0)
@recycle
HelpRec(syntax='@recycle <object>', desc="\nThis command destroys an object.  To work, the object must not have any\nchildren (i.e., must not be in the .parents list of any other object);\nand you must be either the object's owner, or a wizard.\n\nUse this command with caution!  It is better to reshape an existing\nobject into something new than to @recycle and @create a new one.", initial=0)
@which
HelpRec(syntax='@which [<obj>.]<propname>', desc='\nThe @which command searches the specified object, and all of its\nancestors, for properties with the given property name.  Each match\nis printed with the object number and value.  This is handy for\nfinding where an inherited property value is actually defined.\n\nIf no object is specified, "me" is assumed.\n\nExamples:\n\n   @which desc\n   @which Bob.gender', initial=0)
@newuser
HelpRec(syntax='@newuser <base> as <name>         [wizards only]', desc="\nWizards should use @newuser to create new MOOP users.  Specify a base\nclass and the name of the user to be created.  The new user's password\nis set to his name, and the user is sent home (which will be inherited\nfrom the base classes).\n\nExample:\n\n   @newuser $sys.usertypes.Coder as Cody", initial=0)
programming
HelpRec(syntax='', desc='\nMOOP characters derived from $coder can directly execute Python commands,\nas well as create and edit functions attached to objects.  To enter a\nPython command, prefix it with "%", as in:\n\n    %print "Hi there!"\n    %print "My name is", self.name\n\nFunctions are created and edited with the following commands:\n\n   @newfunc                 @edit\n   @list                    @cmd\n\nCommands are viewed and modified with these commands:\n\n   @cmd            @whichcmd             @delcmd\n   @commands', initial=1)
drop
HelpRec(syntax='drop <obj> [in[to] <container>]', desc='\nThis command drops an object from your inventory into the room or into the\nspecified container if specified.', initial=0)
@setown
HelpRec(syntax='@setown <property> to <owner>            [wizards only]', desc='\nThis command is used to set the owner of a property.  Only the owner\nof a property or a wizard can change the property\'s permissions (via\n"@setperm").  Property ownership is especially important when the\nproperty value is a function: functions always execute with the\nprivileges of their owner.  As a special case, you can set a property\nowner to None, in which case the function executes with the \nprivileges of the user calling it.\n\nExamples:\n\n   @setown $user.simplefunc to $user\n   @setown widget.spam to None', initial=0)
exits
HelpRec(syntax='', desc='\nExit locking:\n  To lock an exit, set the lock property on it to be:\n    a string - if the user\'s name matches the string, he is allowed through\n    an object id - the object id specified is allowed through\n    an array - allows multiple strings/object id\'s\n    a function - if the function returns "true", the user is allowed through\n\nExit notification:\n  On an exit, you can set the following properties:\n    success - show\'s the user and the source room this message\n    drop - shows the destination room\'s contents this message\n    fail - shows the user and the source room\'s contents this message if\n      the exit is locked and the user fails the lock test.\n  All of these can either be strings (using show (string, {1:exit, 2:user})\n  or functions.\n\n  I.e. exit.success = "%1N %1:(steps) %2n."\n  For a function: @newfunc exit.drop (self, caller) ...', initial=0)
look
HelpRec(syntax='look [[at] <obj>]', desc='\n"Look" is used to examine your surroundings, or to look at a particular\nobject.\n\nExamples:\n\n   look\n   look spam\n   look at Tim\n   look north', initial=0)
@exits
HelpRec(syntax='@exits [<obj>]', desc='\nLists the exits at your location or on said object.', initial=0)
@cmd
HelpRec(syntax='@cmd <obj>.<syntax> calls <funcdef>', desc='\n@cmd is used for creating new commands.  Commands may be placed\non an object, on the room, or on a player.  You create a command\nby specifying the command syntax, and the function which should\nbe called to actually process the command.  This is best\nillustrated with an example:\n\n   @cmd me.bonk <obj> <int> times calls bonk(%1,%2)\n\nIn this example, "bonk <obj> <int> times" is the comman syntax;\n"calls" is a keyword (itself part of the @cmd syntax) which \nseparates the command syntax from the function definition; and\n"bonk(%1,%2)" is the function to be called.  The command is\ndefined on "me", and the "bonk" function must be defined on the\nsame object.  Now, when this player enters\n\n   bonk Sam 4 times\n\nit will match this particular "bonk" command, and execute\n\n   me.bonk(Sam,4)\n\nwhere "Sam" is actually the Sam object, and 4 is actually an\ninteger; neither of them is passed as a string.  This automatic\nconversion happens because of the parameter tags specified in\nthe command syntax.  Possible parameter tags include:\n\n       <str>   matches anything; passes a string\n       <int>   matches an integer; passes an integer\n       <obj>   matches any object reference; passes an object\n       <this>  matches only the object on which the command\n                 is defined\n       <val>   matches anything, but converts to an integer\n                 or object reference if possible\n\nIn the function definition, you can pass the parsed parameters\nto your function.  To do this, place a percent sign (\'%\')\nand the number of the parameter in the function definition.\nYou may also pass hardcoded integers, strings, or the keyword\n\'caller\', which is the player that invoked the command.\n\nMore examples:\n\n   @cmd ball.bounce <this> calls doBounce(caller)\n\nThis defines a command on the "ball" object which would match\n"bounce ball", and would invoke the function ball.doBounce(caller),\nwhere "caller" is the player that typed the command.\n\n   @cmd me.bonk <obj> calls bonk(%1,3)\n\nThis is the "bonk" example again, but in this case, the second\nparameter (how many times to bonk) is not specified, so a hardcoded\nvalue (3) is passed to the function.', initial=0)
@setperm
HelpRec(syntax='@setperm <obj>.<propname> = <permstr>', desc="\nThis command sets the permissions of the specified property.  <flags>\nshould be any combination of 'r', 'w', and 'c', for Read, Write, and\nChange ownership in descendants.  If the property refers to an object\nmethod, also specify (or not) and 'x' (Execute) flag: 'x' permits\nthe method to be called from Python code; no 'x' means that the method\ncan only be invoked from a command.\n\nExamples:\n\n   @setperm spam.value = wrc\n   @setperm here.desc = r\n   @setperm widget.warble = rc\n   @setperm #15.NukeProgram\n\n(The last example illustrates clearing all permission flags.)", initial=0)
@delprop
HelpRec(syntax='@delprop <obj>.<propname>', desc='\nThe delprop command removes a property from an object.  You must have\nwrite privilege on the object to do this.\n\nExample:\n\n   @delprop me.spam', initial=0)
@delcmd
HelpRec(syntax='@delcmd <obj>.<command>', desc='\n@delcmd deletes a command definition from the specified object.  You\nmust specify the command with its arguments, as in these examples:\n\n   @delcmd widget.warble <this>\n   @delcmd #53.eat <this> with <obj>\n\nSee also: @cmd, @whichcmd', initial=0)
@home
HelpRec(syntax='@home', desc='\nThe @home command magically transports you to your "home" -- that is,\nthe room you have defined to be your home with the @sethome command.', initial=0)
@sethome
HelpRec(syntax='@sethome', desc="\n@sethome declares that the room you're currently in should hereafter\nbe considered your home room.  You can return to this room at any\ntime with the @home command.", initial=0)
@ex
HelpRec(syntax='ex <object>', desc='\nThis command lists all the properties of an object, along with their\nvalue, creator, and permissions.  Note, however, that you may be\nunable to read a property if it belongs to someone else and does not\nhave its "r" (readable) flag set.\n\nSee also: @set, @setperm, @setown', initial=0)
markup tags
HelpRec(syntax='', desc='\nA markup tag is a key letter enclosed in angle brackets; e.g., <X>\nwould be a markup tag if capital "X" were a key letter.  When any\ntext containing these tags is sent to a user, the tags are converted\naccording to that user\'s @markup setting.  The following tags are\ncurrently defined:\n\n   b   <b>bold<t>\n   i   <i>italics<t>\n   u   <u>underline<t>\n   l   <l>blink<t> (that\'s a lowercase "L")\n   t   plain text (turns off b, i, u, and l)\n\nExample:\n   say "I\'m feeling <b>bold<t> today!"\n\nTo see the markup tags with no translation, enter:  @markup show', initial=0)
beam
HelpRec(syntax='beam <obj> to <location>          [wizards only]', desc='\nThe beam command is used to teleport objects from one place to another.\nIt is a quick way for wizards to relocate objects in the database, or\nteleport themselves.\n\nExamples:\n\n   beam $usr.Lancelot to here\n   beam #42 to me\n   beam me to me.Camelot', initial=0)
miscellaneous
HelpRec(syntax='', desc='\nOther commands you may need from time to time:\n\n    @home               @password            give', initial=1)
who
HelpRec(syntax='', desc='\nSee @who.', initial=0)
@parse
HelpRec(syntax='@parse [<dobj>] [<prep> <iobj>]', desc='\nThis is a utility function for new MOOP coders.  You give it any set\nof arguments, and it prints the direct object, preposition, and\nindirect object that it finds.  The same variables would be available\nto your own function.  This is also useful as a quick way to find\nthe object number of a local object (instead of using @ex).\n\nExample:\n\n    @parse Fred with apple', initial=0)
@force
HelpRec(syntax='@force <obj> to <command>, @force <obj> = <command>', desc='\nThis command causes another object to execute a command.  It is handy\nwhen testing the database, as shown below.\n\nExample:\n\n   @force Puppet to get thingy from box', initial=0)
get
HelpRec(syntax='get <obj>', desc='\nThis command attempts to take the specified object from the room.  Some\nobjects cannot be taken.', initial=0)
credits
HelpRec(syntax='', desc="\nCredits are used in MOOP as a way of controlling database size; it's\nsimilar to a quota system, but more flexible.  Creating an object costs\n100 credits; recycling gets you some of those credits back.  Credits\ncannot be created nor destroyed, even by wizards.", initial=0)
@set
HelpRec(syntax='@set <obj>.<propname> to <value>', desc='\nUse this command to set the value of an object property.  Specify the\nproperty with an object reference and the property name, separated by\na period.  The value can be a string, a number, another object, etc.\n\nExamples:\n\n   @set self.age to 42\n   @set breakfast.desc to "Spam, spam, spam, spam, eggs, and spam."\n   @set #15.home = here\n   @set wooden staff.aliases = "staff","pole","big stick"', initial=0)
@compile
HelpRec(syntax='@compile <function>', desc='\nThis command recompiles a function.  This is necessary when you have\nmodified its source code (see @edit).\n\nExample:\n\n   @compile self.squeak', initial=0)
@page
HelpRec(syntax='@page <user> with <message>', desc="\nThis command sends a message to another user, wherever they are.\n\nExample:\n\n   @page Tim with Help!  I've fallen and I can't get up!", initial=0)
@dir
HelpRec(syntax='@dir <object>', desc='\n@dir is similar to @ex, except that it lists only properties which\nrefer to other objects.  This is especially useful on directory\nobjects, which treat their contents like properties.\n\nExamples:\n\n   @dir $pub\n   @dir me.stuff', initial=0)
inventory
HelpRec(syntax='i[nventory]', desc='\nEntering "inventory", "inv", or just "i" shows you what items you are\ncarrying.\n\nSee also: get, drop', initial=0)
wizards
HelpRec(syntax='', desc='\nWizards are the MOOP administrators; they have certain abilities not\navailable to other users.  To facilitate their administrative duties,\nwizards have the following special commands available to them.\n\n    beam              @setown              @newuser\n    find              @movprop             @opassword\n    @force           ', initial=1)
@list
HelpRec(syntax='@list <obj>.<propname> [range]', desc='\nThis command lists a property value which is a tuple, list, or MOOP\nmethod.  (You must be a coder to list MOOP methods, however.)  The\noptional "range" argument is the starting and ending line number\nseparated by a dash, though parts can be omitted in any sensible\ncombination.\n\nExamples:\n\n   @list self.spam\n   @list parrot.memory 3-5\n   @list me.broken 9\n   @list widget.warble 12-', initial=0)
@dig
HelpRec(syntax='@dig <n|s|e|w|ne|se|nw|sw|u|d> to <room>', desc='\nThis command is a very handy shortcut for "digging" a series of rooms.\nYou supply the direction from the current room to the new room, and\neither the name of a new room to create, or a reference to an existing\nroom.  This function then creates the new room (if needed), an exit\nfrom your current room to the new one, and a reciprocal exit from the\nnew room back to the one you\'re in.  Each exit is given a full name\nand the standard one- or two-letter alias, and all objects are placed\nin the proper location.  This is the recommended method for adding\nrooms to a MOOP database.\n\nExamples:\n\n   @dig n to Balcony\n   @dig sw to #57', initial=0)
@markup
HelpRec(syntax='@markup <plain|vt100|html|show>', desc='\nThis command is used to change the way you received styled (marked up)\ntext.  Some MOOP output contains markup tags which indicate bold text\n(etc.)  If you enter the command "@markup plain", these tags will\nsimply be stripped from the output before you see it.  "@markup vt100"\nwill convert the tags to VT100 escape sequences.  "@markup html"\nconverts the tags to HTML tags, which can be interpreted by some MUD\nclients.  "@markup show" does no translation at all, allowing you to\nsee the markup tags in their native MOOP form.  This is very convenient\nwhen examining or copying descriptions for future reference.', initial=0)
@edit
HelpRec(syntax='@edit <function or property>', desc='\nThe @edit command allows you to edit the source code of a function,\nor any property which consists of a list of strings.  Note that after\nchanging the source code of a function, you must compile it for your\nchanges to take effect.\n\nExample:\n\n   @edit self.squeak', initial=0)
introduction
HelpRec(syntax='', desc='\nMOOP is a MOO written in Python.  Both the engine itself, and all the \nuser-written functions in the database, are in the Python scripting\nlanguage.\n\nFor more information on MOOP, point your web browser to:\n        http://moop.sf.net/\n\nFor more information on the Python language, see:\n        http://www.python.org/', initial=1)
preferences
HelpRec(syntax='', desc='\nVarious commands are available to configure your character, and your\ninterface with the MOOP system.\n\n   @password            @markup             @linelen\n   @sethome             @describe', initial=1)
@whichcmd
HelpRec(syntax='@whichcmd [<obj>.]<verb>', desc='\n@whichcmd searches the given object (or if not specified, the caller)\nand all of its ancestors for commands which begin with the given verb.\nThis is useful for finding out where inherited commands are actually\ndefined, and for checking the results of @cmd or @delcmd.\n\nExample:\n\n   @which box.get', initial=0)
@commands
HelpRec(syntax='@commands [<object>]', desc='\nShows the commands available to you or to the specified object.  Warning, this\nwill also show all commands on parent objects as well.\n\nSee @whichcmd as well.', initial=0)
quit
HelpRec(syntax='quit', desc='\nThis command disconnects you from the server.  In direct mode, it\nshuts the game engine down.', initial=0)
@renprop
HelpRec(syntax='@renprop <object>.<propname> to <newpropname>', desc='\nThis command changes the name of a property, especially useful for\ncorrecting typos.\n\nExample:\n\n   @renprop widget.desx to desc\n\nNote that you do NOT specify the object again in the new name; this\ncommand cannot be used to move properties from one object to another.', initial=0)
find
HelpRec(syntax='find <object name>               [wizards only]', desc='\nThe "find" command searches the database for objects with the given\nname.  The name must match exactly; aliases are not checked.  With a\nlarge database, this operation can be expensive, so it should be used\nsparingly.', initial=0)
@password
HelpRec(syntax='@password <new password>', desc="\nThis command is used to change your password.  You should set your\npassword to something hard to guess, but easy for you to remember.\nIt takes effect immediately; you'll need the new password the next\ntime you connect.\n\nExample:\n\n    @password Joshua5", initial=0)
@linelen
HelpRec(syntax='@linelen <int>', desc='\nThis command sets your line length, i.e., how many characters fit on\na line for your terminal or client program.  If line length is\nunlimited (because your client automatically wraps words, for example),\nuse "@linelen 0".  The default is "@linelen 80", i.e, 80-character\nlines.', initial=0)
go
HelpRec(syntax='[go ]<exit>', desc='\nYou explore by moving through exits.  You can do this by using "go" and\nthe exit name, or you can simple enter the name of the exit.\n\nExamples:\n\n   go north\n   south', initial=0)
movement
HelpRec(syntax='', desc='\nSee "go".', initial=0)
@create
HelpRec(syntax='@create <parent> [as <name>]', desc='\nThis command creates a new object, derived from the given parent.  If\nyou supply a name, it will be given to the new object; otherwise, it\nwill be called "new" plus the name of the parent.  The newly created\nobject is placed in your inventory, and you are its owner.\n\nExample:\n\n   @create $exit as north\n   drop north\n\nThis example creates an exit called "north", then drops it into the\ncurrent room.', initial=0)
say
HelpRec(syntax='say <msg>, "<msg>, or \'<msg>', desc='\nTells everyone in the room that you say the specified message.  For\nexample, if you enter:\n\n   say Hello!\n\nand your character\'s name is Bob, then everyone in the room will see:\n\n   Bob says, "Hello!"\n\nAs a shortcut, you can simply enter a single or double quote followed\nby your message.  Thus, the above example is equivalent to:\n\n   "Hello!\n   \'hi.', initial=0)
@newfunc
HelpRec(syntax='@newfunc <obj>.<funcdef>', desc='\nThis command creates a new function with the given name.  It will be\nplaced on the specified object, if any; if none is specified, the\nfunction is stored on yourself (the caller).  <funcdef> should be a\nfull function specification, with parameters; every function should\nhave at least a "self" parameter, which receives the object on which\nthe function was invoked.\n\nFor example, the command\n\n   @newfunc myclock.getCurrentTime(self)\n\ncreates a function "getcurrenttime" on myclock.  If you to call this\nfrom some other method on the same object -- say, .description() --\nyou might use a line like this: \n\n    theTime = self.getCurrentTime()\n\nNotice that the "self" parameter is not specified when you actually\ncall the function, since it is automatically filled in when the \nfunction is invoked.\n\n@newfunc may be used to replace an existing function; or you may\nchange the code with the "@edit" command.\n\nTo give a one-line description to a function, set its "desc"\nproperty.  This will appear when you @ex the object on which the\nfunction is defined.  Example:\n\n   @set self.getCurrentTime.desc to "Returns the current time"\n\nFinally, if you DON\'T want to allow your function to be invoked from\nother Python code, clear its "x" flag.  It will then only work when\ndirectly called by a user command (see @cmd).  Example:\n\n   @setperm self.getCurrentTime = rc', initial=0)
emote
HelpRec(syntax='emote <msg>, :<msg>, or ;<msg>', desc='\nCauses your character to "act out" the specified message.  For example,\nif a player named Bob enters the command:\n\n   emote strikes a pose.\n\nthen everyone in the room will see:\n\n   Bob strikes a pose.\n\nAs a shortcut, you can simply enter a colon or semicolon and the message, as\nin:\n\n   :strikes a pose.\n   ;twiddles his thumbs...', initial=0)
@who
HelpRec(syntax='@who', desc='\nThis command lists all the currently connected users.', initial=0)
creation
HelpRec(syntax='', desc='\nCreating objects in MOOP is fairly straightforward.  The following\ncommands in the core database are relevant:\n\n   @create              @dig               @recycle\n   @ex                  @set               @setperm\n   @setown              @delprop           @renprop\n   @contents            @exits\n\nYou will also want to examine public base objects (@dir $pub).\nNote that you must be a Builder in order to use these commands.\nSee also: programming, exits', initial=1)
@opassword
HelpRec(syntax='@opassword <password> on <user>   [wizards only]', desc="\nThis command sets a user's password.", initial=0)
communication
HelpRec(syntax='', desc='\nA variety of commands are available for communicating with other users:\n\n    say        emote        @page         who', initial=1)
give
HelpRec(syntax='give <amount> to <whom>', desc='\nUse the give command to transfer some of your credits to another player,\nor even to an object.\n\nExample:\n\n   give 150 to Joe', initial=0)
help
HelpRec(syntax='help [<topic>]', desc='\nProvides help on the requested topic, or an initial list of topics\nif none is specified.  Topics may be abbreviated if unique; for\nexample, "help comm" is the same as "help communication".', initial=1)
@describe
HelpRec(syntax='@describe <obj> as <str>', desc='\nThis command is used to set the description of an object.  You must\nbe a wizard, or the owner of the object.  Note that since you always\nown yourself, you can always set your own description.\n\nExample:\n   @describe me as "You see a short man wearing a tall hat."', initial=0)
