<NME> arc_help.ini <BEF> ACCOUNT=\ Command : ACCOUNT\n\r\ Usage : ACCOUNT [ACCOUNT/PLAYER NAME]\n\r\ Example : account bob\n\r\ Short(s): \n\r\ If this mud supports accounts, this command will show the account name, \ a list of characters, and the account expiration date, if applicable. ARCHELP=AHELP AHELP=\ Command : AHELP\n\r\ Usage : AHELP [TOPICNAME]\n\r\ Example : ahelp ahelp\n\r\ Short(s): \n\r\ A command to view the Administrative help commands. AFFECT=\ Command : AFFECT\n\r\ Usage : AFFECT ([TARGET])\n\r\ Example : affect\n\r\ Example : affect room\n\r\ Example : affect area\n\r\ Example : affect orc\n\r\ Short(s): AFF\n\r\ List the spell or other affects that your character is currently \ under the influence of. If targeted, it will show what the given \ target is affected by. AREAS=See the normal HELP AREAS for usage information. \ The Archon version of this command will color the area names based \ on whether the area is active or passive, frozen or stopped. Also, \ area names will be in parenthesis if they are currently Hidden from \ normal users. TICKTOCK=\ Command : TickTock\n\r\ Usage : [NUM HOURS]/CLANTICK/[THREAD NAME]\n\r\ Example : ticktock 10\n\r\ Example : ticktock -4\n\r\ Example : ticktock CLANTICK\n\r\ Example : ticktock THPLAYERS0\n\r\ Advance the time by specified number of hours, or cause one of the \ specified maintenance threads to immediately go through a cycle. \ Use LIST REPORTS to get a list of maintenance threads. The CLANTICK \ argument forces the timed clan maintenance. ARCTOPICS=ATOPICS ATOPICS=\ Command : ATOPICS\n\r\ Usage : ATOPICS [TOPICNAME]\n\r\ Example : atopics\n\r\ Short(s): \n\r\ A command to view the Administrative help topics.\n\r\ ANNOUNCE=\ Command : ANNOUNCE\n\r\ Usage : ANNOUNCE message\n\r\ Usage : ANNOUNCETO [ALL/HERE/PLAYER NAME] message\n\r\ Usage : ANNOUNCEMSG new personalized announce message prefix\n\r\ Example : announce A new area is discovered!\n\r\ Example : announceto all A new area is discovered!\n\r\ Example : announceto bob Hi Bob!\n\r\ Example : announcemsg A squeeky voice screeches \n\r\ Short(s): \n\r\ A command to make annoucements to players -- even those \ who don't want to be announced to. This command can be \ used to announce to all players or selected players using \ the announceto syntax. This is also the command used \ to personalize your announce prefix message by using the \ announcemsg syntax. AS=\ Command : AS\n\r\ Usage : AS [PLAYERNAME/MOBNAME]/(PORT X)/PLAYERS (HERE) [COMMAND]\n\r\ Example : as "bob" inventory\n\r\ Example : as bob here drop all\n\r\ Example : as PLAYERS here drop all\n\r\ Example : as bob cast fireball monster\n\r\ Example : as port 2325 list users\n\r\ Short(s): \n\r\ A command that allows one to issue other commands as if they \ were another player or mob. This is the best way to manage \ a players inventory or bank accounts from the command line. \ The optional "here" parameter should follow the name if the \ command is to be issued with the player in the same room as the \ archon. The optional "port x" parameter can be used to execute \ commands on other mud hosts, so long as the admin qualifies as a SysOp \ on the target port.\n\r\ \n\r\ ASYNC=\ Command : ASYNC\n\r\ Usage : ASYNC [COMMAND]\n\r\ Example : async where mob the\n\r\ Short(s): \n\r\ A command that allows one to issue other commands on their own \ separate thread, so that you can continue to issue other commands \ while the other one is ongoing and giving you its output. Be careful \ not to lock up all of your muds threads this way! AT=\ Command : AT\n\r\ Usage : AT [ROOM ID/DESC/MOB/AREA]/PLAYERS [COMMAND]\n\r\ Example : at "the greasy pub" smile\n\r\ Example : at Midgaard#3001 bow\n\r\ Example : at bob cast fireball bob\n\r\ Example : at players say hello all!\n\r\ Short(s): \n\r\ A command that allows one to issue other commands elsewhere in the \ mud. BAN=\ Command : BAN\n\r\ Usage : BAN [PLAYER TYPE/IP ADDRESS]\n\r\ Example : ban bob\n\r\ Example : ban io.com\n\r\ Example : ban isp3.io.com\n\r\ Example : ban 123.32.23.1\n\r\ Example : ban 123.32.23.*\n\r\ Example : ban *the great\n\r\ Example : ban *penis*\n\r\ Short(s): \n\r\ A command to ban the given player or ip address from the \ system. See also LIST, DESTROY BOOT=\ Command : BOOT\n\r\ Usage : BOOT [PLAYER NAME/IP ADDRESS]\n\r\ Example : boot bob\n\r\ Example : boot 192.168.0.1\n\r\ Short(s): \n\r\ A command to boot off a player. BEACON=\ Command : BEACON\n\r\ Usage : BEACON ([PLAYER TYPE]/[SHIP NAME])\n\r\ Example : beacon\n\r\ Example : beacon bob\n\r\ Short(s): \n\r\ A command to change the start room of a player, or the home port \ of a given ship. If no player or ship \ is named, this command will change your own start room to the room \ you occupy. If a player is named, this command changes the players \ start room to the room the player currently occupies. If a ship is named, \ then the current ships location will become their home port. BUG=\ Command : BUG\n\r\ Usage : BUG [MESSAGE]/REVIEW (FILTER) (STARTING MSG)\n\r\ Usage : BUG TRANSFER (FILTER) [MESSAGE NUMBER] [TARGET]\n\r\ Example : bug nothing is spelled right in this room!\n\r\ Example : bug review\n\r\ Example : bug review 7\n\r\ Example : bug review bob 7\n\r\ Short(s): \n\r\ This command can be used to submit bugs to the system. When \ the REVIEW parameter is given, the bugs will be iterated through \ one at a time to give the archon a chance to delete, comment on, \ or email each one. An optional starting number can be given to REVIEW. \ An optional filter can be given to list only messages assigned to a particular user. CATALOG=\ Command : CATALOG\n\r\ Usage : CATALOG LIST (MOBS/ITEMS/CATEGORIES/) [NAME MASK]\n\r\ Usage : CATALOG (DELETE) [ITEM/MOB NAME]\n\r\ Usage : CATALOG (ROOM/AREA/WORLD) (MOBS/ITEMS/)\n\r\ Usage : CATALOG EDIT [ITEM NAME]\n\r\ Usage : CATALOG CATEGORY [CATEGORY NAME]\n\r\ Usage : CATALOG SCAN/DBSCAN (ROOM/AREA/WORLD) (MOBS/ITEMS/)\n\r\ Usage : CATALOG OVERLOOK/DBOVERLOOK (ROOM/AREA/WORLD) (MOBS/ITEMS/)\n\r\ Example : catalog list\n\r\ Example : catalog list mobs the st\n\r\ Example : catalog list mob categories\n\r\ Example : catalog the waiter\n\r\ Example : catalog delete the waiter\n\r\ Example : catalog edit the sword\n\r\ Example : catalog room mobs\n\r\ Example : catalog scan area\n\r\ Example : catalog dboverlook area mobs\n\r\ Short(s) : \n\r\ This command is used to manage your muds global catalog of generic mobs and/or items. \ The catalog is a place where you can store templates of mobs and items for reuse, \ or for quick global modification and analysis. Mobs and items in your catalog \ can be changed globally simply by creating and then changing any instance of one \ of them. You can create \ new instances of a cataloged object simply by entering CREATE <cataloged object name>. \ Your catalog is keyed by name, so once the name of a cataloged item or mob is set, it \ should not be changed. \ \n\r\n\r\ Cataloged items can be placed into categories by issueing the catalog category command \ before adding or modifying catalog entries. Mobs and items so cataloged must still \ have a unique global name, but flagging them this way can make listing them must easier. \ \n\r\n\r\ You may review the objects in your catalog using the catalog list command. You can also \ check the catalog synchronicity of the objects in your live rooms with scan, or your \ saved rooms with dbscan. You can check for uncataloged objects in live rooms with the \ overlook parameter, or in your saved rooms with dboverlook. \ \n\r\n\r\ You may delete an object from your catalog to stop using it as a global template. \ Deleting an object from the catalog only detaches instances of a cataloged object from \ all others, but does not destroy any actual instances.\ \n\r\n\r\ The catalog is also used to manage a global random item-drop table. Items can be set to \ randomly appear in the inventories of selected mobs when those mobs are brought to life, or \ at the moment of their death. Use CATALOG EDIT <item name> to change drop settings. CLOAK=\ Command : CLOAK\n\r\ Usage : CLOAK (OFF)\n\r\ Example : cloak\n\r\ Example : cloak off\n\r\ Short(s) : \n\r\ Cloak makes the player unable to be seen in the WHO list. They can \ still be seen by players in the same room, however. COPY=\ Command : COPY\n\r\ Usage : COPY ([NUMBER]) [ITEM TYPE]/[DIRECTION] \n\r\ Example : copy joe\n\r\ Example : copy beast sword\n\r\ Example : copy Longsword@room\n\r\ Example : copy Longsword@an orc\n\r\ Example : copy east\n\r\ Short(s): \n\r\ A command for the creation of items, mobs, and rooms. \ Enter COPY for more information on command usage. CREATE=\ Command : CREATE\n\r\ Usage : CREATE [ITEM TYPE] ... \n\r\ Example : create room e StdRoom\n\r\ Example : create item Longsword\n\r\ Example : create item Longsword@room\n\r\ Example : create item Longsword@an orc\n\r\ Example : create StdExit east\n\r\ Example : create news\n\r\ Short(s): \n\r\ A command for the creation of an exit, item, quest, faction, component, government, holiday, \ clan, mob, race, mixedrace, ability, language, craftskill, help/ahelp, achievement, manufacturer, \ allqualify, class, poll, debugflag, webserver, disableflag, enableflag, news, user, trap, \ wrightskill, gatherskill, or room. \ Enter CREATE or CREATE X for more information on command usage. \ Use AHELP QUESTS for more information on creating quests. DESTROY=\ Command : DESTROY\n\r\ Usage : DESTROY [ITEM TYPE] ... \n\r\ Example : destroy room e\n\r\ Example : destroy orc\n\r\ Example : destroy item longsword\n\r\ Example : destroy item longsword@an orc\n\r\ Short(s): \n\r\ A command for the destruction of items, quests, components, planes, mobs, rooms, exits, polls, classes, races, \ and listed bugs, typos, ideas, and ban. \ Enter DESTROY for more information on command usage. DEVIATIONS=\ Command : DEVIATIONS\n\r\ Usage : DEVIATIONS [MOBS/ITEMS/BOTH] [MASK]/ROOM/AREA \n\r\ Example : deviations mobs area\n\r\ Short(s): \n\r\ A command for showing items in a room or area, and how they \ deviate from established norms for their type and level. This is done \ by comparing the base stats. Magical ability is applied only to the level \ of the item. EVERY=\ Command : EVERY\n\r\ Usage : EVERY [ROOM/ITEM/MOB/EXIT] (INAREA/INWORLD) (+PLAYERS) (<MASK>[ZAPPERMASK]</MASK>) [COMMAND]\n\r\ Example : every room inarea look\n\r\ Example : every mob cast tourettes *\n\r\ Short(s): \n\r\ This command allows you to execute a command against every room, item, mob, or exit in the same room \ as the Archon. The name of the target can be substituted in your command with an asterisk *. The \ INAREA or INWORLD flag may be given to expand the rooms affected. The +PLAYERS flag will include players \ when the MOB argument is given. A ZapperMask may be placed between <MASK> and </MASK> strings to filter \ out the type of mob/item affected; see HELP ZAPPERMASK for more information on that. EXPIRE=\ Command : EXPIRE\n\r\ Usage : EXPIRE [PLAYERNAME] ([NEW DAYS REMAINING]) \n\r\ Example : expire bob\n\r\ Example : expire bob 15\n\r\ Short(s): \n\r\ This command sets and displays the amount of active days a user has left. This command \ is only relevant if the account expiration system is enabled in your coffeemud.ini file. GENERATE=\ Command : GENERATE\n\r\ Usage : GENERATE [OBJ TYPE] [ID] (FROM [FILENAME]) ([VAR]=[VAL]...) ([DIRECTION])\n\r\ Example : generate area maze_dungeon from randareas/example.xml areasize=50 "areaname= the test" \ level_range=10?20 aggrochance=50 theme=kobolds south\n\r\ Example : generate string list\n\r\ \n\r\ This command uses an xml file to generate random content for your mud. This content can \ be anything from whole areas, to rooms, mobs, items, or simple strings. By default, the \ content is built from the file in resources/randareas/example.xml, though the builder \ may specify his or her own xml file path as one of the many arguments. The arguments, \ briefly, are:\n\r\ \n\r\ OBJ TYPE: One of the following: AREA, ROOM, MOB, ITEM, or STRING.\n\r\ \n\r\ ID : one of the "id" xml attributes defined on any tag in the XML file. \ Use GENERATE STRING LIST for a list of all "id" attributes defined in your file.\n\r\ \n\r\ FROM "F": An optional argument to specify your own xml file, with the resources \ directory being the default root.\n\r\ \n\r\ VAR=VAL : One or more variables and their definitions. Many tags will have a specific set of required \ variables which must be defined in order for the content to be generated. Failing to specify \ one of the required variables will cause an error message listing the variables which must \ be defined, and the type of data required for the variable. Variable types which list numbers \ as their data types may also have math expressions values (so you can use random numbers). See \ the help on MATH EXPRESSION for more information on this. In addition to required variables, you \ may also use the space to enter one or more "override" values. Many object fields (such as LEVEL \ for mobs and items, or NAME, etc) as well as the XML id tags, can have their "random" values overridden \ by defining them using the generate command. If you need to use a space in a variable value, enclose \ the ENTIRE definition in quotes, such as "areaname=the dungeon" instead of areaname="the dungeon".\n\r\ \n\r\ DIRECTION: This applies only to ROOM and AREA object types. The object, if successfully generated, will \ be linked to the current room that the player is standing in, in the direction they specify.\n\r\ \n\r\ In closing, the GENERATE command is an interesting way to deliver large amounts of dynamic content \ for your world, though it can never replace the caring touch of a real, creative builder. If \ anyone is interested in writing their own xml content, please open up the /resources/randareas/example.xml \ file and begin reading. Use that file as an example on how to construct your own. I3_CHANNELS=\ Command : I3 CHANNELS\n\r\ Usage : I3 CHANNELS\n\r\ Example : i3 channels\n\r\ Short(s) : \n\r\ Lists all the channels available on the InterMud3 network, even those \ which your mud does not subscribe to. JCONSOLE=\ Command : JCONSOLE\n\r\ Usage : JCONSOLE [TOPICNAME]\n\r\ Example : jconsole ([statement])\n\r\ Short(s): \n\r\ When entered with a statement, this command will execute the single javascript statement \ and exit. When entered alone, it will enter a console where the user can enter as many \ javascript statements as they want, and the system will even remember any variables or \ functions they've defined later one (does NOT survive reboots!). All the Scriptable/MOBPROG \ commands and functions are also available, though the commands and functions must be entered \ in ALL UPPERCASE, and commands must have their parameters separated by commas instead of spaces, \ be put into quotes, and surrounded by parenthesis like javascript function calls. \ Lastly, for entering multi-line data, you can enter multi line mode by entering < by itself, \ and exiting by entering > by itself. RESET_ROOM=RESET RESET_AREA=RESET RESET_REJUV=RESET RESET_RELEVEL=RESET RESET_MOBCOMBATSTATS=RESET RESET_ITEMSTATS=RESET RESET_PASSWORD=RESET RESET_PASSWORDS=RESET RESET_INIFILE=RESET RESET=\ Command : RESET\n\r\ Usage : RESET (REJUV) ROOM/AREA (ITEMS/MOBS)\n\r\ Usage : RESET MOBCOMBATSTATS ROOM/AREA/WORLD/CATALOG (NOSAVE) ([AREANAME])\n\r\ Usage : RESET ITEMSTATS ROOM/AREA/WORLD/CATALOG (NOSAVE) ([AREANAME])\n\r\ Usage : RESET INIFILE\n\r\ Usage : RESET PASSWORD [NAME]\n\r\ Usage : RESET RELEVEL\n\r\ Example : reset room\n\r\ Example : reset area\n\r\ Example : reset rejuv area items\n\r\ Example : reset mobcombatstats world\n\r\ Example : reset itemstats catalog nosave midgaard\n\r\ Example : reset password krogon\n\r\ Short(s) : \n\r\ The reset room or area command will revive any wandered or \ dead mobs whose location is the same as the invokers. Any \ removed items which are resettable will also return. Any items \ or mobs which do not belong in the location will be returned to \ their proper homes.\n\r\ \n\r\ The reset rejuv room or area command will revive any dead mobs or \ resettable items at the location of the invoker. Mobs that have \ wandered away will not be returned. No other mobs or items in the \ room will be affected.\n\r\ \n\r\ The reset itemstats and reset mobstats commands serve a similar \ purpose. Both will modify the vital statistics of all the mobs \ or items in the room, area, world, or catalog specified. The \ statistics will be "normalizations" of vital combat scores based \ on the mob or items level, and the game engine's definition of \ nominal ratings for that level. They will \ allow a "preview" of changes to be made by specifying the "nosave" \ parameter on the command line, which prevents permanent changes. \ Area names may also be specified on the command line to cause the \ command to skip certain areas (for use with WORLD parameter only).\n\r\ \n\r\ Reset relevel is a dangerous but potentially time saving command to \ change the levels of all mobs and items in the same area as the user from \ falling within its current range of levels to a new range. See help \ [areaname] to see the existing minimum and maximum levels of the area. \ \n\r\ The reset password command will let you generate a random password \ for the given player or account and email it to their address on file, \ or change it to a neutral word when no email address is on file.\n\r\ \n\r\ You can also reload your ini settings, or the lists.ini file using \ reset inifile. LIST=\ Command : LIST\n\r\ Usage : LIST ([SHOPKEEPER])\n\r\ Example : list\n\r\ Example : list quests\n\r\ Example : list reports\n\r\ Example : list areas\n\r\ Example : list log last 10\n\r\ Short(s): \n\r\ The normal player version of this command will display the items \ which a particular shopkeeper MOB may be selling, along with the \ prices being offered to your characters. \n\r\ \n\r\ The Admin version can also be qualified with UNLINKEDEXITS, ITEMS, ARMOR, ENVRESOURCES, \ WEAPONS, MOBS, ROOMS, AREA, LOCALES, BEHAVIORS, EXITS, RACES, CLASSES, STAFF, \ SPELLS, SONGS, PRAYERS, PROPERTIES, THIEFSKILLS, COMMON, JOURNALS, SKILLS, \ QUESTS, DISEASES, POISONS, TICKS, MAGIC, TECH, CLANITEMS, COMMANDJOURNAL, \ TITLES, NOPURGE, BANNED, RACECATS, LOG, USERS, LINKAGES, REPORTS, THREADS, \ RESOURCES, ONEWAYDOORS, CHANTS, POWERS, SUPERPOWERS, CLANS, GOVERNMENTS, CRON, \ FACTIONS, MATERIALS, OBJCOUNTERS, POLLS, CONTENTS, BUGS, TYPOS, IDEAS, TASKS, \ NEWS, AREAS, SESSIONS, AREATYPE, REALESTATE, SELECT:, or AUTOAWARDS, ASSISTS... \ depending upon the listers security.\n\r\ \n\r\ Additional help *may* be available by entering HELP LIST [X] where X is one of the above. SESSIONS=LIST_SESSIONS LIST_ABILITYCODES=\ Command : LIST\n\r\ Usage : LIST ABILITYCODES\n\r\ Example : list abilitycodes\n\r\ Lists the general categories of abilities, sometimes called ACODES. LIST_SELECT=\ Command : LIST SELECT:\n\r\ Usage : LIST SELECT: [MQL STRING]\n\r\ Usage : LIST AREA SELECT: [MQL STRING]\n\r\ Example : list select: name from mobs where 'here' in name\n\r\ Example : list area select: name from mobs where 'here' in name\n\r\ Executes a search using the MQL query language. LIST_CRON=\ Command : LIST\n\r\ Usage : LIST CRON\n\r\ Example : list cron\n\r\ Lists the cron jobs created on this server. LIST_WHO=\ Command : LIST\n\r\ Usage : LIST WHO\n\r\ Example : list who\n\r\ Lists the characters online. LIST_STUCK=LIST_STUCKS LIST_STUCKS=\ Command : LIST\n\r\ Usage : LIST STUCKS\n\r\ Example : list stucks\n\r\ Lists the journal entries in SYSTEM_STUCK LIST_SQL=\ Command : LIST\n\r\ Usage : LIST SQL [SQL QUERY]\n\r\ Example : list sql select CMUSERID from CMCHAR\n\r\ Returns the results of a SQL query to the database. LIST_PLANES=\ Command : LIST\n\r\ Usage : LIST PLANES\n\r\ Example : list planes\n\r\ Lists the planes of existence. LIST_ABILITYFLAGS=\ Command : LIST\n\r\ Usage : LIST ABILITYFLAGS\n\r\ Example : list abilityflags\n\r\ Lists the complete set of flags that can be assigned to a general ability id. LIST_ASSISTS=\ Command : LIST\n\r\ Usage : LIST ASSISTS\n\r\ Example : list assists\n\r\ Lists the temporary request for assistance from the players. LIST_BANKS=\ Command : LIST\n\r\ Usage : LIST BANKS\n\r\ Example : list banks\n\r\ Lists all the bank mobs in the world. LIST_BUGS=\ Command : LIST\n\r\ Usage : LIST BUGS (TO)\n\r\ Example : list bugs\n\r\ Example : list bugs bob\n\r\ Lists all the entries in the SYSTEM_BUGS journal. An optional name can be appended \ to show entries assign to that name. LIST_IDEAS=\ Command : LIST\n\r\ Usage : LIST IDEAS (TO)\n\r\ Example : list ideas\n\r\ Example : list ideas bob\n\r\ Lists all the entries in the SYSTEM_IDEAS journal. An optional name can be appended \ to show entries assign to that name. LIST_TYPOS=\ Command : LIST\n\r\ Usage : LIST TYPOS (TO)\n\r\ Example : list typos\n\r\ Example : list typos bob\n\r\ Lists all the entries in the SYSTEM_TYPOS journal. An optional name can be appended \ to show entries assign to that name. LIST_UNLINKEDEXITS=\ Command : LIST\n\r\ Usage : LIST UNLINKEDEXITS (LOG)\n\r\ Example : list unlinkedexits\n\r\ Example : list unlinkedexits log\n\r\ Lists all the rooms which have directions for which an exit has been defined, \ but does not link to any room. Adding the log parameter will dump all that stuff \ to your mud.log LIST_GENSTATS=\ Command : LIST\n\r\ Usage : LIST GENSTATS ([CLASS]/[ID]/[ITEM/MOB/WHATEVER NAME])\n\r\ Example : list genstats GenWeapon\n\r\ Example : list genstats orc\n\r\ Example : list genstats GenItem\n\r\ Example : list genstats door\n\r\ Shows the Generic Item stat names for the given class or item. These \ names are used in scripting, in random area xml, and the gmodify command. LIST_ITEMS=\ Command : LIST\n\r\ Usage : LIST ITEMS\n\r\ Example : list items\n\r\ Shows the item java classes (item ids) available to archons. LIST_COMMANDS=\ Command : LIST\n\r\ Usage : LIST COMMANDS ([PLAYER])\n\r\ Example : list commands\n\r\ Example : list commands bob\n\r\ Shows the list of all trigger/command words. A player may \ optionally be given to change the available commands list. LIST_SOCIALS=\ Command : LIST\n\r\ Usage : LIST SOCIALS\n\r\ Example : list socials\n\r\ Shows the list of all base socials. LIST_ABILITYDOMAINS=\ Command : LIST\n\r\ Usage : LIST ABILITYDOMAINS\n\r\ Example : list abilitydomains\n\r\ Shows the list of domains that abilities, skills, spells, chants, etc belong to. LIST_AREATYPES=\ Command : LIST\n\r\ Usage : LIST AREATYPES\n\r\ Example : list areatypes\n\r\ Shows the list of the area type ids (class ids). LIST_ARMOR=\ Command : LIST\n\r\ Usage : LIST ARMOR\n\r\ Example : list armor\n\r\ Shows the armor java classes (item ids) available to archons. LIST_ACHIEVEMENTS=\ Command : LIST\n\r\ Usage : LIST ACHIEVEMENTS\n\r\ Example : list achievements\n\r\ Shows all the achievements available to players. LIST_ENVRESOURCES=\ Command : LIST\n\r\ Usage : LIST ENVRESOURCES (SHORT) (MASK)\n\r\ Example : list envresources\n\r\ Example : list envresources short\n\r\ Example : list envresources Vegetation\n\r\ Lists all the raw material resources defined for your mud, along with its \ material type, money value, frequency of occurrence, strength, and what kinds \ of Locales the resource may be gathered from using the appropriate skill.\n\r\ \n\r\ Adding the short parameter just shows a raw list of resource names. Adding a \ mask will limit the list to those things that contain the mask. LIST_EXPIRED=\ Command : LIST\n\r\ Usage : LIST EXPIRED\n\r\ Example : list expired\n\r\ Lists all the accounts which have expired. LIST_WEAPONS=\ Command : LIST\n\r\ Usage : LIST WEAPONS\n\r\ Example : list weapons\n\r\ Shows the weapon java classes (item ids) available to archons. LIST_MOBS=\ Command : LIST\n\r\ Usage : LIST MOBS\n\r\ Example : list mobs\n\r\ Shows the mob java classes (mob ids) available to archons. LIST_ROOMS=\ Command : LIST\n\r\ Usage : LIST ROOMS ([FILTER])\n\r\ Example : list rooms\n\r\ Example : list rooms garden\n\r\ Lists all the rooms in the current area, along with the short display name of \ each room. The room id and display name can be filtered by a given string. LIST_AREA=\ Command : LIST\n\r\ Usage : LIST AREA (ROOM/MOB/ITEM/SHOPS/MOBMASK/ITEMMASK) ([MASK])\n\r\ Example : list area\n\r\ Example : list area mob creeper\n\r\ Example : list area mobmask -race +elf\n\r\ Lists all the rooms in the current area, along with the locale type of each room. \ Optionally, a specifier can be added to search for rooms, mobs, items by name, or \ mobs and items by zapper mask using the mobmask/itemmask parameters. LIST_LIBRARIES=\ Command : LIST\n\r\ Usage : LIST LIBRARIES\n\r\ Example : list libraries\n\r\ Lists all the librarian mobs in the world. LIST_LOCALES=\ Command : LIST\n\r\ Usage : LIST LOCALES\n\r\ Example : list locales\n\r\ Shows the list of room java classes (locale ids) available to archons. LIST_BEHAVIORS=\ Command : LIST\n\r\ Usage : LIST BEHAVIORS\n\r\ Example : list behaviors\n\r\ Shows the list of behavior java classes (behavior ids) available to archons. LIST_EXITS=\ Command : LIST\n\r\ Usage : LIST EXITS\n\r\ Example : list exits\n\r\ Shows the list of exit java classes (exit ids) available to archons. LIST_FILEUSE=\ Command : LIST \n\r\ Usage : LIST FILEUSE [PATH]\n\r\ Example : list fileuse progs/knucklebones.script\n\r\ Shows the currently loaded objects in the game that are making use of the given script. \ The path may be a full path, or a partial-resources-path. LIST_RACES=\ Command : LIST\n\r\ Usage : LIST RACES (SHORT) (MASK)\n\r\ Example : list races\n\r\ Example : list races short\n\r\ Example : list races avian\n\r\ Shows the list of race java classes (race ids) available to archons. \ Races will have their racial categories shown in () next to the ID. \ Races with an * next to them are Generic. Adding the short parameter \ will only show a simple list of race ids. Adding a mask will limit the \ list to races containing the word. LIST_CLASSES=\ Command : LIST CLASSES\n\r\ Usage : LIST CLASSES (SHORT)\n\r\ Example : list classes\n\r\ Example : list classes short\n\r\ Shows the list of char class java classes (charclass ids) available to archons. \ Charclasses will have their base classes shown in () next to the ID. \ Charclasses with an * next to them are Generic. Adding the short parameter \ will only show a simple list of char class ids. LIST_STAFF=\ Command : LIST\n\r\ Usage : LIST STAFF\n\r\ Example : list staff\n\r\ Lists all the areas, along with any Area SubOps defined for those areas. LIST_SHIPS=\ Command : LIST\n\r\ Usage : LIST SHIPS\n\r\ Example : list ships\n\r\ Shows all the active ships, sailing and space-bourne, in the universe. LIST_ABILITIES=\ Command : LIST \n\r\ Usage : LIST ABILITIES (DOMAIN/FLAG)\n\r\ Example : list abilities\n\r\ Example : list abilities enchantment/charm\n\r\ Example : list abilities moving\n\r\ Shows the list of java classes (ability ids) available to archons. \ For domain options, do LIST ABILITYDOMAINS, and for flags \ LIST ABILITYFLAGS LIST_SPELLS=\ Command : LIST \n\r\ Usage : LIST SPELLS (DOMAIN)\n\r\ Example : list spells\n\r\ Example : list spells enchantment/charm\n\r\ Shows the list of spell java classes (ability ids) available to archons. LIST_SONGS=\ Command : LIST \n\r\ Usage : LIST SONGS (DOMAIN)\n\r\ Example : list songs\n\r\ Shows the list of song java classes (ability ids) available to archons. LIST_POSTOFFICES=\ Command : LIST\n\r\ Usage : LIST POSTOFFICES\n\r\ Example : list postoffices\n\r\ Lists all the post office mobs in the world. LIST_PRAYERS=\ Command : LIST \n\r\ Usage : LIST PRAYERS (DOMAIN)\n\r\ Example : list prayers\n\r\ Shows the list of prayer java classes (ability ids) available to archons. LIST_PROPERTIES=\ Command : LIST \n\r\ Usage : LIST PROPERTIES\n\r\ Example : list properties\n\r\ Shows the list of property java classes (ability ids) available to archons. LIST_STATS=\ Command : LIST\n\r\ Usage : LIST STATS [CLASS ID]/[NAME]/HERE/[DIRECTION]\n\r\ Example : list stats GenItem\n\r\ Example : list stats bob\n\r\ Example : list stats sword\n\r\ Example : list stats north\n\r\ Example : list stats here\n\r\ Lists the readable and modifiable stat variables for a given class or object. \ These are the keys used in GMODIFY and GSTAT Scriptable command and so forth. LIST_TASKS=\ Command : LIST\n\r\ Usage : LIST TASKS\n\r\ Example : list tasks\n\r\ Lists the entries in the task channel, if it exists. LIST_TECHSKILLS=\ Command : LIST \n\r\ Usage : LIST TECHSKILLS\n\r\ Example : list techskills\n\r\ Shows the list of tech skill java classes (ability ids) available to archons. LIST_THIEFSKILLS=\ Command : LIST \n\r\ Usage : LIST THIEFSKILLS (DOMAIN)\n\r\ Example : list thiefskills\n\r\ Shows the list of thief skill java classes (ability ids) available to archons. LIST_COMMON=\ Command : LIST \n\r\ Usage : LIST COMMON (DOMAIN)\n\r\ Example : list common\n\r\ Shows the list of common skill java classes (ability ids) available to archons. LIST_JOURNALS=\ Command : LIST \n\r\ Usage : LIST JOURNALS\n\r\ Example : list journals\n\r\ Shows the list of all Journals (message/note areas) that exist in your database, \ along with the number of entries in each journal. LIST_COMMANDJOURNALS=\ Command : LIST \n\r\ Usage : LIST COMMANDJOURNALS\n\r\ Example : list commandjournals\n\r\ Shows the list of all Command Journals (message/note areas) that exist in your system, \ along with the number of entries in each journal in the database. LIST_SKILLS=\ Command : LIST \n\r\ Usage : LIST SKILLS (DOMAIN)\n\r\ Example : list skills\n\r\ Shows the list of all skills (ability ids) available to archons. LIST_SOFTWARE=\ Command : LIST \n\r\ Usage : LIST SOFTWARE\n\r\ Example : list software\n\r\ Shows the list of all software (tech item ids) available to archons. LIST_QUESTS=\ Command : LIST \n\r\ Usage : LIST QUESTS\n\r\ Example : list quests\n\r\ Lists all the quests being managed by the quest manager, along with the current \ status of the quest (running, or not), and if it is time-delayed, how long until \ the quest will attempt to start again. LIST_QUESTNAMES=\ Command : LIST \n\r\ Usage : LIST QUESTNAMES\n\r\ Example : list questNAMEs\n\r\ Lists all the quests being managed by the quest manager, along with the display \ name of the quests (if any). LIST_QUESTWINNERS=\ Command : LIST \n\r\ Usage : LIST QUESTWINNERS (NAME)\n\r\ Example : list questwinners\n\r\ Example : list questwinners myquest\n\r\ Lists all the quests being managed by the quest manager, along with all the winners \ of the quests. A name may be optionally given to narrow down which quests are shown. LIST_DISEASES=\ Command : LIST\n\r\ Usage : LIST DISEASES\n\r\ Example : list diseases\n\r\ Shows the list of all diseases (ability ids) available to archons. LIST_POISONS=\ Command : LIST\n\r\ Usage : LIST POISONS\n\r\ Example : list poisons\n\r\ Shows the list of all poisons (ability ids) available to archons. LIST_LANGUAGES=\ Command : LIST\n\r\ Usage : LIST LANGUAGES\n\r\ Example : list languages\n\r\ Shows the list of all languages (ability ids) available to archons. LIST_TICKS=\ Command : LIST\n\r\ Usage : LIST TICKS ([GROUP NUMBER]/ACTIVE/PROBLEMS/[MASK]) (COL)\n\r\ Example : list ticks\n\r\ Example : list ticks 7\n\r\ Example : list ticks active\n\r\ Example : list ticks problems\n\r\ Shows the list of ticking objects in the game. A ticking object is simply \ one that may get thread time at some point from the engine. By default, each \ entry consists of a group id, the name of the object that is ticking, the ID \ of the tick-type, and a status or ! if the object is not ticking.\n\r\ \n\r\ Valid parameters include a tick group number, the word "active" to only show \ ticks that are currently receiving thread time, "problems" to receive a list of \ the ticks that have consumed the most average thread time, or a string mask to \ filter by object name.\n\r\ \n\r\ The last column of each report may be replaced by adding a valid column name to \ the end of the list command. Valid columns include: \ tickername, tickerid, tickerstatus, tickerstatusstr, tickercodeword, tickertickdown, \ tickerretickdown, tickermillitotal, tickermilliavg, tickerlaststartmillis, tickerlaststopmillis,\ tickerlaststartdate, tickerlaststopdate, tickerlastduration, tickersuspended LIST_MAGIC=\ Command : LIST\n\r\ Usage : LIST MAGIC\n\r\ Example : list magic\n\r\ Shows the list of magic item java classes (item ids) available to archons. LIST_TECH=\ Command : LIST\n\r\ Usage : LIST TECH\n\r\ Example : list tech\n\r\ Shows the list of tech item java classes (item ids) available to archons. LIST_CLANITEMS=\ Command : LIST\n\r\ Usage : LIST CLANITEMS\n\r\ Example : list clanitems\n\r\ Shows the list of clan item java classes (item ids) available to archons. LIST_COMMANDJOURNAL=\ Command : LIST\n\r\ Usage : LIST COMMANDJOURNAL\n\r\ Example : list commandjournal\n\r\ Further help is not yet available. May be unimplemented. LIST_REALESTATE=\ Command : LIST\n\r\ Usage : LIST REALESTATE (/AREA/WORLD) ([OWNER NAME])\n\r\ Example : list realestate\n\r\ Example : list realestate world bob\n\r\ Example : list realestate area\n\r\ Lists all the rooms for sale in the current area, along with the current \ name of the room, the current owner (if any) and the price. LIST_NOPURGE=\ Command : LIST\n\r\ Usage : LIST NOPURGE\n\r\ Example : list nopurge\n\r\ Lists the names of accounts or players who are exempt from the account/player \ purging rules defined in your coffeemud.ini file. In short, these users will \ never be deleted, even if they never ever log in again. LIST_BANNED=\ Command : LIST\n\r\ Usage : LIST BANNED\n\r\ Example : list banned\n\r\ Lists the player names, ip addresses, or ip masks that are banned from your mud. LIST_RACECATS=\ Command : LIST\n\r\ Usage : LIST RACECATS (SHORT)\n\r\ Example : list racecats\n\r\ Example : list racecats short\n\r\ Lists the unique racial categories of all the races in coffeemud. Adding the \ short param will just make the list look different. LIST_LOG=\ Command : LIST\n\r\ Usage : LIST LOG (FRONT [NUMBER]/BACK [NUMBER]/SKIP [NUMBER])\n\r\ Example : list log\n\r\ Example : list log first 10\n\r\ Example : list log last 20\n\r\ Example : list log skip 50\n\r\ Displays the server log. If you use the first X param, it will only show the first X \ lines of the log. If you use the last X param, it will only show the last X lines. If \ you use the skip X param, it will show the entire log after the first X lines. LIST_USERS=\ Command : LIST\n\r\ Usage : LIST USERS (LOADED) (COLUMN NAME)\n\r\ Example : list users\n\r\ Example : list users ip\n\r\ Lists all the players in your game database, showing by default their race, current class, \ level, hours played, last login time/date, and name. If you specify a column name of \ NAME, CLASS, RACE, LEVEL, AGE, LAST, EMAIL, or IP, then that column will be shown if it \ is not available, and the list will be sorted by that column. The LOADED argument may \ be prefixed to show only the users cached in memory. LIST_LINKAGES=\ Command : LIST\n\r\ Usage : LIST LINKAGES (WORLD) (SUBSTATS)\n\r\ Example : list linkages\n\r\ This bizarre command will list area rooms, showing number of rooms, number of mobs, \ average mob levels, and average alignment. It will also show how many groups of rooms \ refer back to other rooms in the area, and which areas rooms in this area link to. \ If you add the WORLD parameter, then all areas are listed. If you add the SUBSTATS \ parameter, then the linking areas stats are shown instead of the linking room ids. LIST_REPORTS=\ Command : LIST\n\r\ Usage : LIST REPORTS\n\r\ Example : list reports\n\r\ Shows a brief report on resource usage of your mud, such as memory, total cpu times, \ average cpu times for ticking objects, number of tick groups and ticking objects, etc. \ It will also enumerate the several main service threads of the mud, and show their status \ as well. LIST_THREADS=\ Command : LIST\n\r\ Usage : LIST THREADS (SHORT) (EXTEND)\n\r\ Example : list threads\n\r\ Example : list threads short\n\r\ Lists all the threads running in the mud, along with what they are doing, if that information \ is available. Threads are generally idle, so that should be reflected most of the time. \ The short parameter will filter out those threads sleeping, waiting, or parked in an executor. \ The extend parameter will show a little more information about the thread. LIST_THREAD=\ Command : LIST\n\r\ Usage : LIST THREAD (NAMED)\n\r\ Example : list thread Worker0#12\n\r\ This will just give a stack dump of a thread of the given name. See LIST THREADS for more \ information. LIST_RESOURCES=\ Command : LIST\n\r\ Usage : LIST RESOURCES ([MASK])\n\r\ Example : list resources\n\r\ Example : list resources dragons den\n\r\ Lists all the cached binary and text data objects in your mud. This will include stuff like \ parsed MOBPROG programs, MOBPROG variables, text files, help files, area statistics, and so forth. \ Adding a mask parameter will limit the view of resources only to those with those keywords. LIST_ONEWAYDOORS=\ Command : LIST\n\r\ Usage : LIST ONEWAYDOORS (LOG)\n\r\ Example : list onewaydoors\n\r\ Example : list onewaydoors log\n\r\ Lists all the rooms in your world with at least one direction where it links to another room, \ but that room does NOT link back to it. Could be indicative of a problem? Adding a log \ parameter will dump this list to your mud.log. LIST_CHANTS=\ Command : LIST\n\r\ Usage : LIST CHANTS (DOMAIN)\n\r\ Example : list chants\n\r\ Shows all the chant spell java class names (ability ids) available to your archons. LIST_SUPERPOWERS=\ Command : LIST\n\r\ Usage : LIST POWERS (DOMAIN)\n\r\ Example : list powers\n\r\ Shows all the superpower java class names (ability ids) available to your archons. LIST_COMPONENTS=\ Command : LIST\n\r\ Usage : LIST COMPONENTS\n\r\ Example : list components\n\r\ Lists all the Ability IDs (skills, spells, etc) for which a component requirement \ has been defined using the engine's component system. It will also list a friendly description \ of what those component requirements are, as well as any component-specific socials defined for \ use in component rituals and triggers. LIST_EXPERTISES=\ Command : LIST\n\r\ Usage : LIST EXPERTISES (MASK)\n\r\ Example : list expertises\n\r\ Example : list expertises work\n\r\ Lists all the expertise IDs, along with their friendly names and requirements to learn. LIST_FACTIONS=\ Command : LIST\n\r\ Usage : LIST FACTIONS\n\r\ Example : list factions\n\r\ Lists the friendly names of all the factions defined in your game, along with the file/path \ that defines that faction. LIST_MATERIALS=\ Command : LIST\n\r\ Usage : LIST MATERIALS\n\r\ Example : list materials\n\r\ Lists all the base material types. Use list ENVRESOURCES for what you probably want. LIST_OBJCOUNTERS=\ Command : LIST\n\r\ Usage : LIST OBJCOUNTERS\n\r\ Example : list objcounters\n\r\ Deprecated, but may be revived again in the future if I start seeing memory consumption issues. LIST_POLLS=\ Command : LIST\n\r\ Usage : LIST POLLS\n\r\ Example : list polls\n\r\ Lists all the player polls currently defined in the game. LIST_CONTENTS=\ Command : LIST\n\r\ Usage : LIST CONTENTS (AREA/[AREA NAME])\n\r\ Example : list contents\n\r\ Lists all the mobs and items in the current room, along with their level and alignment. \ Adding an AREA parameter will do this for the whole current area, or you can enter the \ name of a particular area. LIST_EXPIRES=\ Command : LIST\n\r\ Usage : LIST EXPIRES\n\r\ Example : list expires\n\r\ Lists all the rooms in the current area, along with when that room expires (or *). LIST_TITLES=\ Command : LIST\n\r\ Usage : LIST TITLES\n\r\ Example : list titles\n\r\ Lists all the auto-applied player titles defined in your game, along with the requirements, \ that is, the trigger, that will make them available. LIST_AWARDS=\ Command : LIST\n\r\ Usage : LIST AWARDS\n\r\ Example : list awards\n\r\ Lists all the auto-applied player awards rules defined in your game, along with the requirements, \ that is, the trigger, that will make them available. LIST_AREARESOURCES=\ Command : LIST\n\r\ Usage : LIST AREARESOURCES\n\r\ Example : list arearesources\n\r\ Lists all the rooms int the current area, along with the locale id, and the type of raw \ resource that can be gathered in that room at this moment. LIST_CONQUERED=\ Command : LIST\n\r\ Usage : LIST CONQUERED\n\r\ Example : list conqured\n\r\ Lists all the areas in the game, along with the names of the clans that control them. \ Areas that list "The Archons" as controllers are un-conquerable (do not have the Conquerable \ behavior on them). Others are as listed, or blank for unconquered-at-present. LIST_HOLIDAYS=\ Command : LIST\n\r\ Usage : LIST HOLIDAYS\n\r\ Example : list holidays\n\r\ Lists all the official Holidays defined in your game, along with the areas that they are \ specified to apply in (or *special* if they are multi-area). LIST_RECIPES=\ Command : LIST\n\r\ Usage : LIST RECIPES ([SKILL ID])\n\r\ Example : list recipes\n\r\ Example : list recipes Cooking\n\r\ By default, this will list the names of all the common skills (ability ids) that have \ editable recipe lists. If a valid ability id is specified as a parmeter, then it will \ list all the editable recipes for that common skill. LIST_HELPFILEREQUESTS=\ Command : LIST\n\r\ Usage : LIST HELPFILEREQUESTS\n\r\ Example : list helpfilerequests\n\r\ Lists all the entries in your help help log, if your mud is configured to keep one. LIST_SCRIPTS=\ Command : LIST\n\r\ Usage : LIST SCRIPTS (AREA) COUNT/DETAILS/CUSTOM\n\r\ Example : list scripts count\n\r\ Example : list scripts details\n\r\ Example : list scripts custom\n\r\ Lists all the scripts in use in your game. The COUNT param will show all the scripts, and \ how many objects are referring to that script. List scripts details will show the first part of the \ script name, the name of the object that it is attached to, and the room where that object is \ located. List scripts custom will show all the objects with custom scripts, the objects \ location, and a full listing of the custom script (a custom script is simply one that is hard \ coded into the behavior instead of coming from a file). LIST_ACCOUNTS=\ Command : LIST\n\r\ Usage : LIST ACCOUNTS ([COLUMN NAME])\n\r\ Example : list accounts\n\r\ Example : list accounts email\n\r\ If your mud is using the account system, this will list all the accounts in the game, \ along with their last login date, email address, and all players associated with that account. \ If you specify a column name of NAME, LAST, EMAIL, or IP, then that column will be shown if it \ is not available, and the list will be sorted by that column. You can specify column name LIST_GOVERNMENTS=\ Command : LIST\n\r\ Usage : LIST GOVERNMENTS\n\r\ Example : list governments\n\r\ Lists all the clan governments that have been defined in your mud. LIST_CLANS=\ Command : LIST\n\r\ Usage : LIST CLANS\n\r\ Example : list clans\n\r\ Lists all the clans in your mud, along with the number of members each clan has. LIST_CURRENTS=\ Command : LIST\n\r\ Usage : LIST CURRENTS\n\r\ Example : list currents\n\r\ Lists all the electronic devices receiving electronic current processing in the game. \ This could be groups of computers in a lab, or devices aboard a single space ship. LIST_DEBUGFLAG=\ Command : LIST\n\r\ Usage : LIST DEBUGFLAG\n\r\ Example : list debugflag\n\r\ Lists all the debug flags that have been turned on in your system. These flags cause \ extra messaging to appear in your mud log (mud.log), assuming DBGMSGS has been appropriately \ set in your coffeemud.ini file. LIST_DISABLEFLAG=\ Command : LIST\n\r\ Usage : LIST DISABLEFLAG\n\r\ Example : list disableflag\n\r\ Lists all the disabled subsystems in your mud. LIST_ENABLEFLAG=\ Command : LIST\n\r\ Usage : LIST ENABLEFLAG\n\r\ Example : list enableflag\n\r\ Lists all the currently enabled (but normally disabled) subsystems in your mud. LIST_ALLQUALIFYS=\ Command : LIST\n\r\ Usage : LIST ALLQUALIFYS\n\r\ Example : list allqualifys\n\r\ Lists all the multi-class-qualified skills defined in your All-Qualifies list in your game, \ along with the level of the skill, whether it is auto-gained or not, the default proficiency, \ and a qualifying mask. LIST_MANUFACTURERS=\ Command : LIST\n\r\ Usage : LIST MANUFACTURERS\n\r\ Example : list manufacturers\n\r\ Lists all the tech manufacturers that have been defined in your mud. LIST_NEWS=\ Command : LIST\n\r\ Usage : LIST NEWS ([ENTRY NUMBER]/NEW/ALL)\n\r\ Example : list news\n\r\ Example : list news 5\n\r\ Example : list news new\n\r\ Example : list news all\n\r\ Lists all the news items currently active in your game (these are the bulletins seen at login). \ If a number is specified, only that full news item will be shown. If the NEW parameter is used, \ then only NEW news is shown. If the ALL parameter is used, all news is shown. LIST_AREAS=\ Command : LIST\n\r\ Usage : LIST AREAS (SORTBY [COLUMN]...) (COLS [COLUMN]...))\n\r\ Example : list areas\n\r\ Example : list areas sortby name cols name population\n\r\ Example : list areas sortby name\n\r\ Lists all the standard areas in your game. By default, it also shows whether the area is Hidden, \ how many rooms are in the area, whether it is in a passive or active state, its current \ population, and the median level. If the sortby parameter is used, then you can follow it \ with the order of columns to sort by. Valid columns include: NAME, AUTHOR, DESCRIPTION , \ ROOMS, STATE, HIDDEN, POPULATION, MIN_LEVEL, MAX_LEVEL, AVG_LEVEL, MED_LEVEL, AVG_ALIGNMENT, \ MED_ALIGNMENT, TOTAL_LEVELS, TOTAL_INTELLIGENT_LEVELS, VISITABLE_ROOMS, INDOOR_ROOMS, PIETY. \ If the columns parameter is used, then you can follow it with columns to substitute in the table. LIST_TIMEZONES=\ Command : LIST\n\r\ Usage : LIST TIMEZONES\n\r\ Example : list timezones\n\r\ Lists all areas grouped by their shared calendar/time. LIST_WORLD=\ Command : LIST\n\r\ Usage : LIST WORLD (SORTBY [COLUMN]...) (COLS [COLUMN]...))\n\r\ Example : list world\n\r\ Example : list world sortby name cols name population\n\r\ Example : list world sortby name\n\r\ Lists all the areas in your current world, meaning areas that share the same time zone. \ By default, it also shows whether the area is Hidden, \ how many rooms are in the area, whether it is in a passive or active state, its current \ population, and the median level. If the sortby parameter is used, then you can follow it \ with the order of columns to sort by. Valid columns include: NAME, AUTHOR, DESCRIPTION , \ ROOMS, STATE, HIDDEN, POPULATION, MIN_LEVEL, MAX_LEVEL, AVG_LEVEL, MED_LEVEL, AVG_ALIGNMENT, \ MED_ALIGNMENT, TOTAL_LEVELS, TOTAL_INTELLIGENT_LEVELS, VISITABLE_ROOMS, INDOOR_ROOMS. \ If the columns parameter is used, then you can follow it with columns to substitute in the table. LIST_PLANETS=\ Command : LIST\n\r\ Usage : LIST PLANETS (SORTBY [COLUMN]...) (COLS [COLUMN]...))\n\r\ Example : list planets\n\r\ Example : list planets sortby name cols name population\n\r\ Example : list planets sortby name\n\r\ Lists all the planets in your game. By default, it also shows whether the planet is Hidden, \ how many rooms are in the planet, whether it is in a passive or active state, its current \ population, and the median level. If the sortby parameter is used, then you can follow it \ with the order of columns to sort by. Valid columns include: NAME, AUTHOR, DESCRIPTION , \ ROOMS, STATE, HIDDEN, POPULATION, MIN_LEVEL, MAX_LEVEL, AVG_LEVEL, MED_LEVEL, AVG_ALIGNMENT, \ MED_ALIGNMENT, TOTAL_LEVELS, TOTAL_INTELLIGENT_LEVELS, VISITABLE_ROOMS, INDOOR_ROOMS. \ If the columns parameter is used, then you can follow it with columns to substitute in the table. LIST_SHIPS=LIST_SPACE LIST_MOONS=LIST_SPACE LIST_BODIES=LIST_SPACE LIST_STARS=LIST_SPACE LIST_SPACESHIPS=LIST_SPACE LIST_SPACE=\ Command : LIST\n\r\ Usage : LIST SPACE (ALL)/((WITHIN [DIST]) (AROUND [X])) (SORTBY [COL])\n\r\ Usage : LIST MOONS (ALL)/((WITHIN [DIST]) (AROUND [X])) (SORTBY [COL])\n\r\ Usage : LIST BODIES (ALL)/((WITHIN [DIST]) (AROUND [X])) (SORTBY [COL])\n\r\ Usage : LIST STARS (ALL)/((WITHIN [DIST]) (AROUND [X])) (SORTBY [COL])\n\r\ Usage : LIST SPACESHIPS (ALL)/((WITHIN [DIST]) (AROUND X])) (SORTBY [COL])\n\r\ Example : list planets all sortby name\n\r\ Example : list space around tattooine within 100 ly\n\r\ Shows the objects in space, or just the moons, planetary bodies, stars, or spaceships. \ You can specify to only see the ones within a particular distance (in dm, km, ly, lm, lh, etc..\ of either the current planet/ship or the specified space object X. Lastly, you can \ sort the list by name, coordinates, or whatever. LIST_SPACESHIPAREAS=\ Command : LIST\n\r\ Usage : LIST SPACESHIPS (SORTBY [COLUMN]...) (COLS [COLUMN]...))\n\r\ Example : list spaceships\n\r\ Example : list spaceships sortby name cols name population\n\r\ Example : list spaceships sortby name\n\r\ Lists all the spaceships in your game. By default, it also shows whether the ship is Hidden, \ how many rooms are in the ship, whether it is in a passive or active state, its current \ population, and the median level. If the sortby parameter is used, then you can follow it \ with the order of columns to sort by. Valid columns include: NAME, AUTHOR, DESCRIPTION , \ ROOMS, STATE, HIDDEN, POPULATION, MIN_LEVEL, MAX_LEVEL, AVG_LEVEL, MED_LEVEL, AVG_ALIGNMENT, \ MED_ALIGNMENT, TOTAL_LEVELS, TOTAL_INTELLIGENT_LEVELS, VISITABLE_ROOMS, INDOOR_ROOMS. \ If the columns parameter is used, then you can follow it with columns to substitute in the table. LIST_SESSIONS=\ Command : LIST\n\r\ Usage : LIST SESSIONS (STATUS/VALID/NAME/IP/IDLE)\n\r\ Example : list sessions\n\r\ Example : list sessions name\n\r\ Lists the players online, their idle time, status, and ip address. An \ optional parameter may be given to sort by one of the fields. STUCK=A COMMAND JOURNAL. See Archon Help (AHELP) on COMMAND JOURNALS NOPURGE=\ Command : NOPURGE\n\r\ Usage : NOPURGE [PLAYER NAME]\n\r\ Example : nopurge bob\n\r\ Short(s): \n\r\ Makes a player inelligible for purging by the autopurge system. Use LIST NOPURGE, \ or DESTROY NOPURGE for maintaining the list. LINK=\ Command : LINK\n\r\ Usage : LINK [ROOMID] [DIRECTION]\n\r\ Example : link midgaard#3001 north\n\r\ Example : link Smurfy Road east\n\r\ Example : link midgaard#3001#(3,2) north\n\r\ Short(s): \n\r\ A command for the linking of rooms to each other, including grid rooms. LOAD=\ Command : LOAD\n\r\ Usage : LOAD [OBJECT TYPE] [PATH/NAME]\n\r\ Example : load resource banned.ini\n\r\ Example : load ability /myclasses/blah.class\n\r\ Example : load weapon /myclasses/blah2.class\n\r\ Example : load class com.planet_ink.coffee_mud.Items.Weapons.Sword.class\n\r\ Example : load weapon com/planet_ink/coffee_mud/Items/Weapons/Sword.java\n\r\ Short(s): \n\r\ A command for the loading of resources, faction ini files, unloaded areas, \ or class files of java or javascript.\n\r\ \n\r\ Use LIST RESOURCES to see a list of resources.\n\r\ \n\r\ Use LOAD AREA area name re-load areas in the database that have been unloaded.\n\r\ \n\r\ For class files, the LIST command can also show whats already loaded. This command \ will automatically attempt to unload a class if it is already loaded. If the specified \ class is a java source file or javascript, it will attempt to compile it first. \ For loading classes, the second parameter may be the word "class" and the system \ will attempt to correct your ambiguity. If it is unable to determine the type of \
{'commit': 'diff --git a/CoffeeMud.vjp b/CoffeeMud.vjp\nindex dfa3897df8..59f365ddd4 100644\nBinary files a/CoffeeMud.vjp and b/CoffeeMud.vjp differ\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Druid/Chant_WhisperWard.java b/com/planet_ink/coffee_mud/Abilities/Druid/Chant_WhisperWard.java\nindex 0424a6fe8b..5a2e58e21c 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Druid/Chant_WhisperWard.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Druid/Chant_WhisperWard.java\n@@ -5,7 +5,7 @@ import com.planet_ink.coffee_mud.common.*;\n import com.planet_ink.coffee_mud.utils.*;\r\n import java.util.*;\r\n \r\n-public class Chant_WhisperWard extends Chant\r\n+public class Chant_WhisperWard extends Chant implements Trap\r\n {\r\n \tpublic String ID() { return "Chant_WhisperWard"; }\r\n \tpublic String name(){ return "Whisperward";}\r\n@@ -18,6 +18,25 @@ public class Chant_WhisperWard extends Chant\n \tboolean waitingForLook=false;\r\n \tpublic Environmental newInstance(){\treturn new Chant_WhisperWard();\t}\r\n \t\r\n+\tprivate boolean sprung=false;\r\n+\r\n+\tpublic boolean sprung()\r\n+\t{\r\n+\t\treturn sprung;\r\n+\t}\r\n+\tpublic void setSprung(boolean isSprung)\r\n+\t{\r\n+\t\tsprung=isSprung;\r\n+\t\tif(sprung)\r\n+\t\t\tunInvoke();\r\n+\t}\r\n+\tpublic void setReset(int Reset){}\r\n+\tpublic int getReset(){return 0;}\r\n+\r\n+\tpublic void spring(MOB M)\r\n+\t{\r\n+\t\tdoMyThing();\r\n+\t}\r\n \r\n \tpublic void doMyThing()\r\n \t{\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Fighter/Fighter_Intimidate.java b/com/planet_ink/coffee_mud/Abilities/Fighter/Fighter_Intimidate.java\nindex 486147e2d3..cda0e4d872 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Fighter/Fighter_Intimidate.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Fighter/Fighter_Intimidate.java\n@@ -31,7 +31,7 @@ public class Fighter_Intimidate extends StdAbility\n \t\t\tif((!target.isInCombat())\r\n \t\t\t&&(affect.source().getVictim()!=target)\r\n \t\t\t&&(levelDiff<0)\r\n-\t\t\t&&(profficiencyCheck(-(100+levelDiff),false)))\r\n+\t\t\t&&(profficiencyCheck((-(100+levelDiff))+(target.charStats().getStat(CharStats.CHARISMA)*2),false)))\r\n \t\t\t{\r\n \t\t\t\taffect.source().tell("You are too intimidated by "+target.name());\r\n \t\t\t\tif(affect.source().location()!=lastRoom)\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Assassinate.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Assassinate.java\nindex 262d84e519..dd9073c138 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Assassinate.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Assassinate.java\n@@ -166,15 +166,19 @@ public class Thief_Assassinate extends ThiefSkill\n \t\t}\r\n \t\telse\r\n \t\t{\r\n-\t\t\tmobName=Util.combine(commands,0);\r\n+\t\t\tif(givenTarget!=null)\r\n+\t\t\t\tmobName=givenTarget.name();\r\n+\t\t\telse\r\n+\t\t\t\tmobName=Util.combine(commands,0);\r\n \t\t\tif(mobName.length()==0)\r\n \t\t\t{\r\n \t\t\t\tmob.tell("Assassinate whom?");\r\n \t\t\t\treturn false;\r\n \t\t\t}\r\n-\t\t\tif(mob.location().fetchInhabitant(mobName)!=null)\r\n+\t\t\tMOB M=mob.location().fetchInhabitant(mobName);\r\n+\t\t\tif(M!=null)\r\n \t\t\t{\r\n-\t\t\t\tExternalPlay.postAttack(mob,mob.location().fetchInhabitant(mobName),mob.fetchWieldedItem());\r\n+\t\t\t\tExternalPlay.postAttack(mob,M,mob.fetchWieldedItem());\r\n \t\t\t\treturn false;\r\n \t\t\t}\r\n \t\t}\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Bribe.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Bribe.java\nindex 885528909f..575f472e2d 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Bribe.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Bribe.java\n@@ -31,7 +31,7 @@ public class Thief_Bribe extends ThiefSkill\n \r\n \t\tcommands.removeElementAt(0);\r\n \r\n-\t\tif(!target.mayIFight(mob))\r\n+\t\tif((!target.mayIFight(mob))||(target.charStats().getStat(CharStats.INTELLIGENCE)<3))\r\n \t\t{\r\n \t\t\tmob.tell("You can\'t bribe "+target.name()+".");\r\n \t\t\treturn false;\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Con.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Con.java\nindex c47654df71..5dc5f9db11 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Con.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Con.java\n@@ -1,5 +1,91 @@\n package com.planet_ink.coffee_mud.Abilities.Thief;\r\n \r\n-public class Thief_Con\r\n+import com.planet_ink.coffee_mud.interfaces.*;\r\n+import com.planet_ink.coffee_mud.common.*;\r\n+import com.planet_ink.coffee_mud.utils.*;\r\n+import java.util.*;\r\n+\r\n+public class Thief_Con extends ThiefSkill\r\n {\r\n+\tpublic String ID() { return "Thief_Con"; }\r\n+\tpublic String name(){ return "Con";}\r\n+\tprotected int canAffectCode(){return 0;}\r\n+\tprotected int canTargetCode(){return CAN_MOBS;}\r\n+\tpublic int quality(){return Ability.OK_OTHERS;}\r\n+\tprivate static final String[] triggerStrings = {"CON"};\r\n+\tpublic String[] triggerStrings(){return triggerStrings;}\r\n+\tpublic Environmental newInstance(){\treturn new Thief_Con();}\r\n+\tprivate MOB lastChecked=null;\r\n+\r\n+\tpublic boolean invoke(MOB mob, Vector commands, Environmental givenTarget, boolean auto)\r\n+\t{\r\n+\t\tif(commands.size()<1)\r\n+\t\t{\r\n+\t\t\tmob.tell("Con whom into doing what?");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tVector V=new Vector();\r\n+\t\tV.addElement(commands.elementAt(0));\r\n+\t\tMOB target=this.getTarget(mob,V,givenTarget);\r\n+\t\tif(target==null) return false;\r\n+\r\n+\t\tcommands.removeElementAt(0);\r\n+\r\n+\t\tif((!target.mayIFight(mob))||(target.charStats().getStat(CharStats.INTELLIGENCE)<3))\r\n+\t\t{\r\n+\t\t\tmob.tell("You can\'t con "+target.name()+".");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\r\n+\t\tif(commands.size()<1)\r\n+\t\t{\r\n+\t\t\tmob.tell("Con "+target.charStats().himher()+" into doing what?");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\r\n+\t\tif(((String)commands.elementAt(0)).toUpperCase().startsWith("FOL"))\r\n+\t\t{\r\n+\t\t\tmob.tell("You can\'t con someone to follow.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\r\n+\t\tint oldProfficiency=profficiency();\r\n+\r\n+\t\tif(!super.invoke(mob,commands,givenTarget,auto))\r\n+\t\t\treturn false;\r\n+\r\n+\t\tint levelDiff=(mob.envStats().level()-target.envStats().level())*10;\r\n+\t\tif(levelDiff>0) levelDiff=0;\r\n+\t\tboolean success=profficiencyCheck((mob.charStats().getStat(CharStats.CHARISMA)*2)+levelDiff,auto);\r\n+\r\n+\t\tif(!success)\r\n+\t\t{\r\n+\t\t\tFullMsg msg=new FullMsg(mob,target,this,Affect.MSG_SPEAK,"^T<S-NAME> attempt(s) to con <T-NAMESELF> into \'"+Util.combine(commands,0)+"\', but is unsuccesssful.^?");\r\n+\t\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t}\r\n+\t\telse\r\n+\t\t{\r\n+\t\t\tFullMsg msg=new FullMsg(mob,target,this,Affect.MSG_SPEAK,"^T<S-NAME> con(s) <T-NAMESELF> into \'"+Util.combine(commands,0)+"\'.^?");\r\n+\t\t\tmob.recoverEnvStats();\r\n+\t\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t\t{\r\n+\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t\t\ttry\r\n+\t\t\t\t{\r\n+\t\t\t\t\tExternalPlay.doCommand(target,commands);\r\n+\t\t\t\t}\r\n+\t\t\t\tcatch(Exception e)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tmob.tell(target.charStats().HeShe()+" smiles, saying \'"+e.getMessage()+"\'.");\r\n+\t\t\t\t}\r\n+\t\t\t}\r\n+\t\t\ttarget.recoverEnvStats();\r\n+\t\t}\r\n+\t\tif(target==lastChecked)\r\n+\t\t\tsetProfficiency(oldProfficiency);\r\n+\t\tlastChecked=target;\r\n+\t\treturn success;\r\n+\t}\r\n+\r\n }\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_ContractHit.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_ContractHit.java\nindex 6c3dbec276..85f78691af 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_ContractHit.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_ContractHit.java\n@@ -1,5 +1,196 @@\n package com.planet_ink.coffee_mud.Abilities.Thief;\r\n+import com.planet_ink.coffee_mud.Abilities.StdAbility;\r\n+import com.planet_ink.coffee_mud.interfaces.*;\r\n+import com.planet_ink.coffee_mud.common.*;\r\n+import com.planet_ink.coffee_mud.utils.*;\r\n+import java.util.*;\r\n \r\n-public class Thief_ContractHit\r\n+public class Thief_ContractHit extends ThiefSkill\r\n {\r\n-}\r\n+\tpublic String ID() { return "Thief_ContractHit"; }\r\n+\tpublic String name(){ return "Contract Hit";}\r\n+\tprotected int canAffectCode(){return Ability.CAN_MOBS;}\r\n+\tprotected int canTargetCode(){return Ability.CAN_MOBS;}\r\n+\tpublic int quality(){return Ability.MALICIOUS;}\r\n+\tprivate static final String[] triggerStrings = {"CONTRACTHIT"};\r\n+\tpublic String[] triggerStrings(){return triggerStrings;}\r\n+\tpublic Environmental newInstance(){\treturn new Thief_ContractHit();}\r\n+\tpublic String displayText(){return "";}\r\n+\tprivate boolean done=false;\r\n+\tprivate boolean readyToHit=false;\r\n+\tprivate boolean hitting=false;\r\n+\tprivate Vector hitmen=new Vector();\r\n+\r\n+\tpublic void affect(Environmental myHost, Affect msg)\r\n+\t{\r\n+\t\tif((affected!=null)&&(affected instanceof MOB))\r\n+\t\t\tif(msg.amISource((MOB)affected)&&(msg.sourceMinor()==Affect.TYP_DEATH))\r\n+\t\t\t{\r\n+\t\t\t\tdone=true;\r\n+\t\t\t\tunInvoke();\r\n+\t\t\t}\r\n+\t\tsuper.affect(myHost,msg);\r\n+\t}\r\n+\t\r\n+\tpublic boolean tick(Tickable ticking, int tickID)\r\n+\t{\r\n+\t\tif((affected!=null)&&(affected instanceof MOB)&&(invoker()!=null))\r\n+\t\t{\r\n+\t\t\tif(super.tickDown==1)\r\n+\t\t\t{\r\n+\t\t\t\tmakeLongLasting();\r\n+\t\t\t\treadyToHit=true;\r\n+\t\t\t}\r\n+\t\t\tMOB mob=(MOB)affected;\r\n+\t\t\tif(readyToHit&&(!hitting)\r\n+\t\t\t&&(mob.location()!=null)\r\n+\t\t\t&&(mob.location().domainType()==Room.DOMAIN_OUTDOORS_CITY))\r\n+\t\t\t{\r\n+\t\t\t\thitting=true;\r\n+\t\t\t\tint num=Dice.roll(1,3,3);\r\n+\t\t\t\tint level=mob.envStats().level();\r\n+\t\t\t\tif(level>invoker.envStats().level()) level=invoker.envStats().level();\r\n+\t\t\t\tCharClass C=CMClass.getCharClass("StdCharClass");\r\n+\t\t\t\tif(C==null) C=mob.charStats().getCurrentClass();\r\n+\t\t\t\tfor(int i=0;i<num;i++)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tMOB M=(MOB)CMClass.getMOB("Assassin");\r\n+\t\t\t\t\tM.baseEnvStats().setLevel(level);\r\n+\t\t\t\t\tM.recoverEnvStats();\r\n+\t\t\t\t\tM.baseEnvStats().setArmor(C.getLevelArmor(M));\r\n+\t\t\t\t\tM.baseEnvStats().setAttackAdjustment(C.getLevelAttack(M));\r\n+\t\t\t\t\tM.baseEnvStats().setDamage(C.getLevelDamage(M));\r\n+\t\t\t\t\tM.baseEnvStats().setRejuv(0);\r\n+\t\t\t\t\tM.baseState().setMana(C.getLevelMana(M));\r\n+\t\t\t\t\tM.baseState().setMovement(C.getLevelMana(M));\r\n+\t\t\t\t\tM.baseState().setHitPoints((10*level)+Dice.roll(level,baseEnvStats().ability(),1));\r\n+\t\t\t\t\tBehavior B=CMClass.getBehavior("Thiefness");\r\n+\t\t\t\t\tB.setParms("Assassin");\r\n+\t\t\t\t\tM.addBehavior(B);\r\n+\t\t\t\t\tM.recoverEnvStats();\r\n+\t\t\t\t\tM.recoverCharStats();\r\n+\t\t\t\t\tM.recoverMaxState();\r\n+\t\t\t\t\tM.text();\r\n+\t\t\t\t\thitmen.addElement(M);\r\n+\t\t\t\t\tM.bringToLife(mob.location(),true);\r\n+\t\t\t\t\tM.setVictim(mob);\r\n+\t\t\t\t\tmob.setVictim(M);\r\n+\t\t\t\t\tAbility A=M.fetchAbility("Thief_BackStab");\r\n+\t\t\t\t\tif(A!=null) A.invoke(M,mob,false);\r\n+\t\t\t\t}\r\n+\t\t\t}\r\n+\t\t\telse\r\n+\t\t\tif(hitting)\r\n+\t\t\t{\r\n+\t\t\t\tboolean anyLeft=false;\r\n+\t\t\t\tfor(int i=0;i<hitmen.size();i++)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tMOB M=(MOB)hitmen.elementAt(i);\r\n+\t\t\t\t\tif((!M.amDead())&&(M.location()!=null)&&(Sense.aliveAwakeMobile(M,true)))\r\n+\t\t\t\t\t{\r\n+\t\t\t\t\t\tanyLeft=true;\r\n+\t\t\t\t\t\t\r\n+\t\t\t\t\t\tif(((M.getVictim()!=mob)||(!M.location().isInhabitant(mob)))\r\n+\t\t\t\t\t\t&&(M.fetchAffect("Thief_Assassinate")==null))\r\n+\t\t\t\t\t\t{\r\n+\t\t\t\t\t\t\tM.setVictim(null);\r\n+\t\t\t\t\t\t\tAbility A=M.fetchAbility("Thief_Assassinate");\r\n+\t\t\t\t\t\t\tA.invoke(M,mob,false);\r\n+\t\t\t\t\t\t}\r\n+\t\t\t\t\t}\r\n+\t\t\t\t}\r\n+\t\t\t\tif(!anyLeft)\r\n+\t\t\t\t\tunInvoke();\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\treturn super.tick(ticking,tickID);\r\n+\t}\r\n+\r\n+\tpublic void unInvoke()\r\n+\t{\r\n+\t\tMOB M=invoker();\r\n+\t\tsuper.unInvoke();\r\n+\t\tif(done)\r\n+\t\t{\r\n+\t\t\tif(M.location()!=null)\r\n+\t\t\t{\r\n+\t\t\t\tif(M.location().show(M,null,Affect.MSG_OK_VISUAL,"Someone steps out of the shadows and whispers something to <S-NAME>."))\r\n+\t\t\t\t\tM.tell("\'It is done.\'");\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\tfor(int i=0;i<hitmen.size();i++)\r\n+\t\t{\r\n+\t\t\tM=(MOB)hitmen.elementAt(i);\r\n+\t\t\tM.destroy();\r\n+\t\t}\r\n+\t}\r\n+\t\r\n+\tpublic boolean invoke(MOB mob, Vector commands, Environmental givenTarget, boolean auto)\r\n+\t{\r\n+\t\tif(commands.size()<1)\r\n+\t\t{\r\n+\t\t\tmob.tell("Who would you like to put a hit out on?");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tif(mob.location()==null) return false;\r\n+\t\tif(mob.location().domainType()!=Room.DOMAIN_OUTDOORS_CITY)\r\n+\t\t{\r\n+\t\t\tmob.tell("You need to be on the streets to put out a hit.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tVector V=new Vector();\r\n+\t\tfor(Enumeration e=CMMap.rooms();e.hasMoreElements();)\r\n+\t\t{\r\n+\t\t\tRoom R=(Room)e.nextElement();\r\n+\t\t\tMOB M=R.fetchInhabitant(Util.combine(commands,0));\r\n+\t\t\tif(M!=null)\r\n+\t\t\t\tV.addElement(M);\r\n+\t\t}\r\n+\t\tMOB target=null;\r\n+\t\tif(V.size()>0)\r\n+\t\t\ttarget=(MOB)V.elementAt(Dice.roll(1,V.size(),0));\r\n+\t\tif(target==null)\r\n+\t\t{\r\n+\t\t\tmob.tell("You\'ve never heard of \'"+target.name()+"\'.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tif(target==mob)\r\n+\t\t{\r\n+\t\t\tmob.tell("You cannot hit yourself!");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tif(!mob.mayIFight(target))\r\n+\t\t{\r\n+\t\t\tmob.tell("You are not allowed to put out a hit on "+target.name()+".");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\t\r\n+\t\tint level=target.envStats().level();\r\n+\t\tif(level>mob.envStats().level()) level=mob.envStats().level();\r\n+\t\tint goldRequired=100*level;\r\n+\t\tif(mob.getMoney()<goldRequired)\r\n+\t\t{\r\n+\t\t\tmob.tell("You\'ll need at least "+goldRequired+" gold to put a hit out on "+target.name()+".");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\t\r\n+\t\tif(!super.invoke(mob,commands,givenTarget,auto))\r\n+\t\t\treturn false;\r\n+\r\n+\t\tint levelDiff=target.envStats().level()-mob.envStats().level();\r\n+\t\tif(levelDiff>0) levelDiff=0;\r\n+\t\tboolean success=profficiencyCheck(levelDiff,auto);\r\n+\r\n+\t\tFullMsg msg=new FullMsg(mob,target,this,Affect.MSG_THIEF_ACT,"<S-NAME> whisper(s) to a dark figure stepping out of the shadows.  The person nods and slips away.");\r\n+\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t{\r\n+\t\t\tmob.location().send(mob,msg);\r\n+\t\t\t\r\n+\t\t\tmob.setMoney(mob.getMoney()-goldRequired);\r\n+\t\t\tif(success)\r\n+\t\t\t\tmaliciousAffect(mob,target,target.envStats().level()+10,0);\r\n+\t\t}\r\n+\t\treturn success;\r\n+\t}\r\n+\r\n+}\n\\ No newline at end of file\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Embezzle.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Embezzle.java\nindex 7699205652..8bf4923137 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Embezzle.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Embezzle.java\n@@ -1,5 +1,108 @@\n package com.planet_ink.coffee_mud.Abilities.Thief;\r\n \r\n-public class Thief_Embezzle\r\n+import com.planet_ink.coffee_mud.interfaces.*;\r\n+import com.planet_ink.coffee_mud.common.*;\r\n+import com.planet_ink.coffee_mud.utils.*;\r\n+import java.util.*;\r\n+\r\n+public class Thief_Embezzle extends ThiefSkill\r\n {\r\n+\tpublic String ID() { return "Thief_Embezzle"; }\r\n+\tpublic String name(){ return "Embezzle";}\r\n+\tprotected int canAffectCode(){return CAN_MOBS;}\r\n+\tprotected int canTargetCode(){return CAN_MOBS;}\r\n+\tpublic int quality(){return Ability.MALICIOUS;}\r\n+\tprivate static final String[] triggerStrings = {"EMBEZZLE"};\r\n+\tpublic String[] triggerStrings(){return triggerStrings;}\r\n+\tpublic Environmental newInstance(){\treturn new Thief_Embezzle();}\r\n+\tpublic Vector mobs=new Vector();\r\n+\r\n+\tpublic boolean invoke(MOB mob, Vector commands, Environmental givenTarget, boolean auto)\r\n+\t{\r\n+\t\tif((commands.size()<2)&&(givenTarget==null))\r\n+\t\t{\r\n+\t\t\tmob.tell("Embezzle money from whose accounts?");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tMOB target=mob.location().fetchInhabitant(Util.combine(commands,0));\r\n+\t\tif((target==null)&&(givenTarget!=null)&&(givenTarget instanceof MOB)) target=(MOB)givenTarget;\r\n+\t\tif((target==null)||(target.amDead())||(!Sense.canBeSeenBy(target,mob)))\r\n+\t\t{\r\n+\t\t\tmob.tell("You don\'t see \'"+Util.combine(commands,1)+"\' here.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tif(!(target instanceof Banker))\r\n+\t\t{\r\n+\t\t\tmob.tell("You can\'t embezzle from "+target.name()+"\'s accounts.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tBanker bank=(Banker)target;\r\n+\t\tAbility A=target.fetchAffect(ID());\r\n+\t\tif(A!=null)\r\n+\t\t{\r\n+\t\t\tmob.tell(target.name()+" is watching "+target.charStats().hisher()+" books too closely.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tint levelDiff=target.envStats().level()-mob.envStats().level();\r\n+\r\n+\t\t\r\n+\t\tif(((!target.mayIFight(mob))&&(levelDiff<10)))\r\n+\t\t{\r\n+\t\t\tmob.tell("You cannot embezzle from "+target.charStats().himher()+".");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\t\r\n+\t\tItem myCoins=bank.findDepositInventory(mob.name(),"1");\r\n+\t\tif((myCoins==null)||(!(myCoins instanceof Coins)))\r\n+\t\t{\r\n+\t\t\tmob.tell("You don\'t have your own account with "+target.name()+".");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tVector accounts=bank.getAccountNames();\r\n+\t\tString victim="";\r\n+\t\tVector choices=new Vector();\r\n+\t\tfor(int i=0;i<accounts.size();i++)\r\n+\t\t{\r\n+\t\t\tString name=(String)accounts.elementAt(i);\r\n+\t\t\tItem coins=bank.findDepositInventory(name,"1");\r\n+\t\t\tif((coins!=null)&&(coins instanceof Coins)&&((((Coins)coins).numberOfCoins()/50)>0))\r\n+\t\t\t\tchoices.addElement(name);\r\n+\t\t}\r\n+\t\tif(choices.size()==0)\r\n+\t\t{\r\n+\t\t\tmob.tell(target.name()+" doesn\'t seem to maintain any accounts worth embezzling from.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tvictim=(String)choices.elementAt(Dice.roll(1,choices.size(),0));\r\n+\t\tCoins coins=(Coins)bank.findDepositInventory(victim,"1");\r\n+\t\tint amount=coins.numberOfCoins()/50;\r\n+\t\tint classLevel=mob.charStats().getClassLevel("Burglar");\r\n+\t\tif((classLevel>0)\r\n+\t\t&&(amount>(1000*classLevel)))\r\n+\t\t   amount=(1000*classLevel);\r\n+\t\t\r\n+\t\tif(!super.invoke(mob,commands,givenTarget,auto))\r\n+\t\t\treturn false;\r\n+\r\n+\t\tboolean success=profficiencyCheck(-(levelDiff*5),auto);\r\n+\t\tif(success)\r\n+\t\t{\r\n+\t\t\tFullMsg msg=new FullMsg(mob,target,this,(auto?Affect.MASK_GENERAL:0)|Affect.MSG_THIEF_ACT,"<S-NAME> embezzle(s) "+amount+" gold from the "+victim+" account maintained by <T-NAME>.");\r\n+\t\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t\t{\r\n+\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t\t\tbeneficialAffect(mob,target,((Host.TIME_TICK_DELAY*Area.A_FULL_DAY)/Host.TICK_TIME));\r\n+\t\t\t\tbank.delDepositInventory(victim,coins);\r\n+\t\t\t\tcoins.setNumberOfCoins(coins.numberOfCoins()-amount);\r\n+\t\t\t\tbank.addDepositInventory(victim,coins);\r\n+\t\t\t\tbank.delDepositInventory(mob.name(),coins);\r\n+\t\t\t\t((Coins)myCoins).setNumberOfCoins(((Coins)myCoins).numberOfCoins()+amount);\r\n+\t\t\t\tbank.addDepositInventory(mob.name(),coins);\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\telse\r\n+\t\t\tmaliciousFizzle(mob,target,"<T-NAME> catch(es) <S-NAME> trying to embezzle money!");\r\n+\t\treturn success;\r\n+\t}\r\n+\r\n }\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Forgery.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Forgery.java\nindex 729782520b..ff860186e6 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Forgery.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Forgery.java\n@@ -1,5 +1,137 @@\n package com.planet_ink.coffee_mud.Abilities.Thief;\r\n+import com.planet_ink.coffee_mud.Abilities.StdAbility;\r\n+import com.planet_ink.coffee_mud.interfaces.*;\r\n+import com.planet_ink.coffee_mud.common.*;\r\n+import com.planet_ink.coffee_mud.utils.*;\r\n+import java.util.*;\r\n \r\n-public class Thief_Forgery\r\n+public class Thief_Forgery extends ThiefSkill\r\n {\r\n-}\r\n+\tpublic String ID() { return "Thief_Forgery"; }\r\n+\tpublic String name(){ return "Forgery";}\r\n+\tprotected int canAffectCode(){return 0;}\r\n+\tprotected int canTargetCode(){return Ability.CAN_MOBS;}\r\n+\tpublic int quality(){return Ability.INDIFFERENT;}\r\n+\tprivate static final String[] triggerStrings = {"FORGERY"};\r\n+\tpublic String[] triggerStrings(){return triggerStrings;}\r\n+\tpublic Environmental newInstance(){\treturn new Thief_Forgery();}\r\n+\t\r\n+\tpublic boolean invoke(MOB mob, Vector commands, Environmental givenTarget, boolean auto)\r\n+\t{\r\n+\t\tif(commands.size()<2)\r\n+\t\t{\r\n+\t\t\tmob.tell("What would you like to forge, and onto what?");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tItem target=mob.fetchInventory((String)commands.lastElement());\r\n+\t\tif((target==null)||(!Sense.canBeSeenBy(target,mob)))\r\n+\t\t{\r\n+\t\t\tmob.tell("You don\'t see \'"+target.name()+"\' here.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tcommands.removeElement(commands.lastElement());\r\n+\r\n+\t\tif((target==null)||(!target.isGeneric())||((target!=null)&&(!target.isReadable())))\r\n+\t\t{\r\n+\t\t\tmob.tell("You can\'t forge anything on that.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\r\n+\t\tString forgeWhat=Util.combine(commands,0);\r\n+\t\tif(forgeWhat.length()==0)\r\n+\t\t{\r\n+\t\t\tmob.tell("Forge what onto \'"+target.name()+"\'?  Try a spell name, a room ID, or a bank note name.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\t\r\n+\t\tString newName="";\r\n+\t\tString newDisplay="";\r\n+\t\tString newDescription="";\r\n+\t\tString newSecretIdentity="";\r\n+\t\tRoom room=CMMap.getRoom(forgeWhat);\r\n+\t\tif(room!=null)\r\n+\t\t{\r\n+\t\t\tItem I=CMClass.getItem("StdTitle");\r\n+\t\t\t((LandTitle)I).setLandRoomID(room.ID());\r\n+\t\t\tnewName=I.name();\r\n+\t\t\tnewDescription=I.description();\r\n+\t\t\tnewDisplay=I.displayText();\r\n+\t\t\tnewSecretIdentity=I.secretIdentity();\r\n+\t\t}\r\n+\t\tif(newName.length()==0)\r\n+\t\t{\r\n+\t\t\tAbility A=CMClass.getAbility(forgeWhat);\r\n+\t\t\tif((A!=null)&&((A.classificationCode()&Ability.ALL_CODES)!=Ability.SPELL))\r\n+\t\t\t{\r\n+\t\t\t\tmob.tell("You can\'t forge \'"+A.name()+"\'.");\r\n+\t\t\t\treturn false;\r\n+\t\t\t}\r\n+\t\t\telse\r\n+\t\t\tif(A!=null)\r\n+\t\t\t{\r\n+\t\t\t\tif(!(target instanceof Scroll))\r\n+\t\t\t\t{\r\n+\t\t\t\t\tmob.tell("You can only forge a spell onto real scrollpaper.");\r\n+\t\t\t\t\treturn false;\r\n+\t\t\t\t}\r\n+\t\t\t\telse\r\n+\t\t\t\tif(((Scroll)target).numSpells()>0)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tmob.tell("That already has real spells on it!");\r\n+\t\t\t\t\treturn false;\r\n+\t\t\t\t}\r\n+\t\t\t\telse\t\t\t\t\t  \r\n+\t\t\t\t{\r\n+\t\t\t\t\tnewName=target.name();\r\n+\t\t\t\t\tnewDisplay=target.displayText();\r\n+\t\t\t\t\tnewDescription=target.description();\r\n+\t\t\t\t\tnewSecretIdentity="a scroll of "+A.name()+" Charges: 10\\n";\r\n+\t\t\t\t}\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\tif(newName.length()==0)\r\n+\t\t{\r\n+\t\t\tShopKeeper M=(ShopKeeper)CMClass.getMOB("StdShopKeeper");\r\n+\t\t\tint[] coins={5,10,50,100,500,1000,5000,10000,100000,1000000,10000000};\r\n+\t\t\tfor(int i=0;i<coins.length;i++)\r\n+\t\t\t{\r\n+\t\t\t\tItem note=M.makeNote(coins[i],null,null);\r\n+\t\t\t\tif(CoffeeUtensils.containsString(note.name(),forgeWhat))\r\n+\t\t\t\t{\r\n+\t\t\t\t\tnewName=note.name();\r\n+\t\t\t\t\tnewDisplay=note.displayText();\r\n+\t\t\t\t\tnewDescription=note.description();\r\n+\t\t\t\t\tnewSecretIdentity=note.rawSecretIdentity();\r\n+\t\t\t\t\tbreak;\r\n+\t\t\t\t}\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\tif(newName.length()==0)\r\n+\t\t{\r\n+\t\t\tmob.tell("You don\'t know how to forge a \'"+forgeWhat+"\'.  Try a spell name, a room ID, or a bank note name.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tforgeWhat=newName;\r\n+\t\t\r\n+\t\tif(!super.invoke(mob,commands,givenTarget,auto))\r\n+\t\t\treturn false;\r\n+\r\n+\t\tboolean success=profficiencyCheck(0,auto);\r\n+\t\t\r\n+\t\tif(success)\r\n+\t\t{\r\n+\t\t\tFullMsg msg=new FullMsg(mob,target,this,Affect.MSG_THIEF_ACT,"<S-NAME> forge(s) "+forgeWhat+" on <T-NAMESELF>.");\r\n+\t\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t\t{\r\n+\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t\t\ttarget.setName(newName);\r\n+\t\t\t\ttarget.setDescription(newDescription);\r\n+\t\t\t\ttarget.setDisplayText(newDisplay);\r\n+\t\t\t\ttarget.setSecretIdentity(newSecretIdentity);\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\telse\r\n+\t\t\tbeneficialVisualFizzle(mob,target,"<S-NAME> attempt(s) to forge "+forgeWhat+", but fail(s).");\r\n+\t\treturn success;\r\n+\t}\r\n+}\n\\ No newline at end of file\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Hide.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Hide.java\nindex 0d7e0d4966..f1768b5fc4 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Hide.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Hide.java\n@@ -16,6 +16,10 @@ public class Thief_Hide extends ThiefSkill\n \tprivate static final String[] triggerStrings = {"HIDE"};\r\n \tpublic String[] triggerStrings(){return triggerStrings;}\r\n \tpublic Environmental newInstance(){\treturn new Thief_Hide();}\r\n+\tpublic int code=0;\r\n+\r\n+\tpublic int abilityCode(){return code;}\r\n+\tpublic void setAbilityCode(int newCode){code=newCode;}\r\n \r\n \t/** this method defines how this thing responds\r\n \t * to environmental changes.  It may handle any\r\n@@ -31,11 +35,20 @@ public class Thief_Hide extends ThiefSkill\n \t\tif(affect.amISource(mob))\r\n \t\t{\r\n \r\n-\t\t\tif(((Util.bset(affect.sourceMajor(),Affect.MASK_SOUND)\r\n-\t\t\t\t ||(affect.sourceMinor()==Affect.TYP_SPEAK)\r\n-\t\t\t\t ||(affect.sourceMinor()==Affect.TYP_ENTER)\r\n+\t\t\tif(((affect.sourceMinor()==Affect.TYP_ENTER)\r\n \t\t\t\t ||(affect.sourceMinor()==Affect.TYP_LEAVE)\r\n-\t\t\t\t ||(affect.sourceMinor()==Affect.TYP_RECALL)))\r\n+\t\t\t\t ||(affect.sourceMinor()==Affect.TYP_FLEE)\r\n+\t\t\t\t ||(affect.sourceMinor()==Affect.TYP_RECALL))\r\n+\t\t\t&&(!Util.bset(affect.sourceMajor(),Affect.MASK_GENERAL))\r\n+\t\t\t&&(affect.sourceMajor()>0))\r\n+\t\t\t{\r\n+\t\t\t\tunInvoke();\r\n+\t\t\t\tmob.recoverEnvStats();\r\n+\t\t\t}\r\n+\t\t\telse\r\n+\t\t\tif((Util.bset(affect.sourceMajor(),Affect.MASK_SOUND)\r\n+\t\t\t\t ||(affect.sourceMinor()==Affect.TYP_SPEAK))\r\n+\t\t\t &&(abilityCode()==0)\r\n \t\t\t &&(!Util.bset(affect.sourceMajor(),Affect.MASK_GENERAL))\r\n \t\t\t &&(affect.sourceMinor()!=Affect.TYP_EXAMINESOMETHING)\r\n \t\t\t &&(affect.sourceMajor()>0))\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_ImprovedHiding.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_ImprovedHiding.java\nindex 56e28e70d6..ac8862afff 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_ImprovedHiding.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_ImprovedHiding.java\n@@ -1,5 +1,71 @@\n package com.planet_ink.coffee_mud.Abilities.Thief;\r\n \r\n-public class Thief_ImprovedHiding\r\n+import com.planet_ink.coffee_mud.interfaces.*;\r\n+import com.planet_ink.coffee_mud.common.*;\r\n+import com.planet_ink.coffee_mud.utils.*;\r\n+import java.util.*;\r\n+\r\n+public class Thief_ImprovedHiding extends ThiefSkill\r\n {\r\n+\tpublic String ID() { return "Thief_ImprovedHiding"; }\r\n+\tpublic String name(){ return "Improved Hiding";}\r\n+\tpublic String displayText(){ return "";}\r\n+\tprotected int canAffectCode(){return CAN_MOBS;}\r\n+\tprotected int canTargetCode(){return 0;}\r\n+\tpublic int quality(){return Ability.OK_SELF;}\r\n+\tpublic Environmental newInstance(){\treturn new Thief_ImprovedHiding();}\r\n+\tpublic boolean isAutoInvoked(){return true;}\r\n+\tpublic boolean canBeUninvoked(){return false;}\r\n+\tpublic boolean active=false;\r\n+\r\n+\tpublic void improve(MOB mob, boolean yesorno)\r\n+\t{\r\n+\t\tAbility A=mob.fetchAffect("Thief_Hide");\r\n+\t\tif(A!=null)\r\n+\t\t{\r\n+\t\t\tif(yesorno)\r\n+\t\t\t\tA.setAbilityCode(1);\r\n+\t\t\telse\r\n+\t\t\t\tA.setAbilityCode(0);\r\n+\t\t}\r\n+\t}\r\n+\t\r\n+\tpublic boolean okAffect(Environmental myHost, Affect affect)\r\n+\t{\r\n+\t\tif((affected==null)||(!(affected instanceof MOB)))\r\n+\t\t\treturn super.okAffect(myHost,affect);\r\n+\r\n+\t\tMOB mob=(MOB)affected;\r\n+\t\tif((!Sense.isHidden(mob))&&(active))\r\n+\t\t{\r\n+\t\t\tactive=false;\r\n+\t\t\timprove(mob,false);\r\n+\t\t\tmob.recoverEnvStats();\r\n+\t\t}\r\n+\t\treturn super.okAffect(myHost,affect);\r\n+\t}\r\n+\r\n+\tpublic boolean tick(Tickable ticking, int tickID)\r\n+\t{\r\n+\t\tif(!super.tick(ticking,tickID)) return false;\r\n+\t\tif((affected!=null)&&(affected instanceof MOB))\r\n+\t\t{\r\n+\t\t\tif(Sense.isHidden(affected))\r\n+\t\t\t{\r\n+\t\t\t\tif(!active)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tactive=true;\r\n+\t\t\t\t\thelpProfficiency((MOB)affected);\r\n+\t\t\t\t\timprove((MOB)affected,true);\r\n+\t\t\t\t}\r\n+\t\t\t}\r\n+\t\t\telse\r\n+\t\t\tif(active)\r\n+\t\t\t{\r\n+\t\t\t\tactive=false;\r\n+\t\t\t\timprove((MOB)affected,false);\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\treturn true;\r\n+\t}\r\n }\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Mark.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Mark.java\nindex 9e1f0308c6..6446e93336 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Mark.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Mark.java\n@@ -99,7 +99,7 @@ public class Thief_Mark extends ThiefSkill\n \t\tif(levelDiff>0) levelDiff=0;\r\n \t\tboolean success=profficiencyCheck(levelDiff,auto);\r\n \r\n-\t\tFullMsg msg=new FullMsg(mob,target,null,Affect.MSG_DELICATE_HANDS_ACT,"<S-NAME> mark(s) <T-NAMESELF>.",Affect.NO_EFFECT,null,Affect.NO_EFFECT,null);\r\n+\t\tFullMsg msg=new FullMsg(mob,target,this,Affect.MSG_DELICATE_HANDS_ACT,"<S-NAME> mark(s) <T-NAMESELF>.",Affect.NO_EFFECT,null,Affect.NO_EFFECT,null);\r\n \t\tif(mob.location().okAffect(mob,msg))\r\n \t\t{\r\n \t\t\tmob.location().send(mob,msg);\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Pick.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Pick.java\nindex bbaa1e8343..428f63d625 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Pick.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Pick.java\n@@ -16,7 +16,11 @@ public class Thief_Pick extends ThiefSkill\n \tprivate static final String[] triggerStrings = {"PICK"};\r\n \tpublic String[] triggerStrings(){return triggerStrings;}\r\n \tpublic Environmental newInstance(){\treturn new Thief_Pick();}\r\n+\tpublic int code=10;\r\n \r\n+\tpublic int abilityCode(){return code;}\r\n+\tpublic void setAbilityCode(int newCode){code=newCode;}\r\n+\t\r\n \tpublic boolean invoke(MOB mob, Vector commands, Environmental givenTarget, boolean auto)\r\n \t{\r\n \t\tString whatTounlock=Util.combine(commands,0);\r\n@@ -39,8 +43,9 @@ public class Thief_Pick extends ThiefSkill\n \t\tif(!super.invoke(mob,commands,givenTarget,auto))\r\n \t\t\treturn false;\r\n \r\n-\t\tboolean success=profficiencyCheck(+((mob.envStats().level()\r\n-\t\t\t\t\t\t\t\t\t\t\t -unlockThis.envStats().level())*3),auto);\r\n+\t\tint adjustment=(mob.envStats().level()-unlockThis.envStats().level())*abilityCode();\r\n+\t\tif(adjustment>0) adjustment=0;\r\n+\t\tboolean success=profficiencyCheck(adjustment,auto);\r\n \r\n \t\tif(!success)\r\n \t\t\tbeneficialVisualFizzle(mob,null,"<S-NAME> attempt(s) to pick "+unlockThis.name()+" and fail(s).");\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_PlantItem.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_PlantItem.java\nindex 8b955f8132..da63214d62 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_PlantItem.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_PlantItem.java\n@@ -1,5 +1,66 @@\n package com.planet_ink.coffee_mud.Abilities.Thief;\r\n+import com.planet_ink.coffee_mud.Abilities.StdAbility;\r\n+import com.planet_ink.coffee_mud.interfaces.*;\r\n+import com.planet_ink.coffee_mud.common.*;\r\n+import com.planet_ink.coffee_mud.utils.*;\r\n+import java.util.*;\r\n \r\n-public class Thief_PlantItem\r\n+public class Thief_PlantItem extends ThiefSkill\r\n {\r\n-}\r\n+\tpublic String ID() { return "Thief_PlantItem"; }\r\n+\tpublic String name(){ return "Plant Item";}\r\n+\tprotected int canAffectCode(){return 0;}\r\n+\tprotected int canTargetCode(){return Ability.CAN_MOBS;}\r\n+\tpublic int quality(){return Ability.INDIFFERENT;}\r\n+\tprivate static final String[] triggerStrings = {"PLANTITEM"};\r\n+\tpublic String[] triggerStrings(){return triggerStrings;}\r\n+\tpublic Environmental newInstance(){\treturn new Thief_PlantItem();}\r\n+\t\r\n+\tpublic boolean invoke(MOB mob, Vector commands, Environmental givenTarget, boolean auto)\r\n+\t{\r\n+\t\tif(commands.size()<2)\r\n+\t\t{\r\n+\t\t\tmob.tell("What would you like to plant on whom?");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tMOB target=mob.location().fetchInhabitant((String)commands.lastElement());\r\n+\t\tif((target==null)||(!Sense.canBeSeenBy(target,mob)))\r\n+\t\t{\r\n+\t\t\tmob.tell("You don\'t see \'"+target.name()+"\' here.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tif(target==mob)\r\n+\t\t{\r\n+\t\t\tmob.tell("You cannot plant anything on yourself!");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tcommands.removeElement(commands.lastElement());\r\n+\t\t\r\n+\t\tItem item=super.getTarget(mob,null,givenTarget,commands,Item.WORN_REQ_UNWORNONLY);\r\n+\t\tif(item==null) return false;\r\n+\t\t\r\n+\t\tif(!super.invoke(mob,commands,givenTarget,auto))\r\n+\t\t\treturn false;\r\n+\r\n+\t\tint levelDiff=target.envStats().level()-mob.envStats().level();\r\n+\t\tif(levelDiff>0) levelDiff=0;\r\n+\t\tboolean success=profficiencyCheck(levelDiff,auto);\r\n+\r\n+\t\tif(success)\r\n+\t\t{\r\n+\t\t\tFullMsg msg=new FullMsg(mob,target,item,Affect.MSG_GIVE,"<S-NAME> plant(s) <O-NAME> on <T-NAMESELF>.",Affect.MSG_GIVE,null,Affect.MSG_GIVE,null);\r\n+\t\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t\t{\r\n+\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t\t\tif(target.isMine(item))\r\n+\t\t\t\t{\r\n+\t\t\t\t\titem.baseEnvStats().setDisposition(item.baseEnvStats().disposition()|EnvStats.IS_HIDDEN);\r\n+\t\t\t\t\titem.recoverEnvStats();\r\n+\t\t\t\t}\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\telse\r\n+\t\t\tbeneficialVisualFizzle(mob,target,"<S-NAME> attempt(s) to plant "+item.name()+" on <T-NAMESELF>, but fail(s).");\r\n+\t\treturn success;\r\n+\t}\r\n+}\n\\ No newline at end of file\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Racketeer.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Racketeer.java\nindex e7f22973c3..02370e13be 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Racketeer.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Racketeer.java\n@@ -1,5 +1,82 @@\n package com.planet_ink.coffee_mud.Abilities.Thief;\r\n \r\n-public class Thief_Racketeer\r\n+import com.planet_ink.coffee_mud.interfaces.*;\r\n+import com.planet_ink.coffee_mud.common.*;\r\n+import com.planet_ink.coffee_mud.utils.*;\r\n+import java.util.*;\r\n+\r\n+public class Thief_Racketeer extends ThiefSkill\r\n {\r\n+\tpublic String ID() { return "Thief_Racketeer"; }\r\n+\tpublic String name(){ return "Racketeer";}\r\n+\tprotected int canAffectCode(){return CAN_MOBS;}\r\n+\tprotected int canTargetCode(){return CAN_MOBS;}\r\n+\tpublic int quality(){return Ability.MALICIOUS;}\r\n+\tprivate static final String[] triggerStrings = {"RACKETTEER"};\r\n+\tpublic String[] triggerStrings(){return triggerStrings;}\r\n+\tpublic Environmental newInstance(){\treturn new Thief_Racketeer();}\r\n+\tpublic Vector mobs=new Vector();\r\n+\r\n+\tpublic boolean invoke(MOB mob, Vector commands, Environmental givenTarget, boolean auto)\r\n+\t{\r\n+\t\tif((commands.size()<1)&&(givenTarget==null))\r\n+\t\t{\r\n+\t\t\tmob.tell("Get protection money from whom?");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tMOB target=mob.location().fetchInhabitant(Util.combine(commands,0));\r\n+\t\tif((target==null)&&(givenTarget!=null)&&(givenTarget instanceof MOB)) target=(MOB)givenTarget;\r\n+\t\tif((target==null)||(target.amDead())||(!Sense.canBeSeenBy(target,mob)))\r\n+\t\t{\r\n+\t\t\tmob.tell("You don\'t see \'"+Util.combine(commands,1)+"\' here.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tif(!(target instanceof ShopKeeper))\r\n+\t\t{\r\n+\t\t\tmob.tell("You can\'t get protection money from "+target.name()+".");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tAbility A=target.fetchAffect(ID());\r\n+\t\tif(A!=null)\r\n+\t\t{\r\n+\t\t\tif(A.invoker()==mob)\r\n+\t\t\t\tmob.tell(target.name()+" has already been extracted from today.");\r\n+\t\t\telse\r\n+\t\t\t{\r\n+\t\t\t\tmob.tell(target.name()+" is already under "+A.invoker().name()+"\'s protection.");\r\n+\t\t\t\tA.invoker().tell("Word on the street is that "+mob.name()+" is trying to push into your business with "+target.name()+".");\r\n+\t\t\t}\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tint levelDiff=target.envStats().level()-mob.envStats().level();\r\n+\r\n+\t\tif(((!target.mayIFight(mob))&&(levelDiff<10)))\r\n+\t\t{\r\n+\t\t\tmob.tell("You cannot rob from "+target.charStats().himher()+".");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tif(!super.invoke(mob,commands,givenTarget,auto))\r\n+\t\t\treturn false;\r\n+\r\n+\t\tint amount=Dice.roll(profficiency(),100,0);\r\n+\t\tboolean success=profficiencyCheck(-(levelDiff*5),auto);\r\n+\t\tif(success)\r\n+\t\t{\r\n+\t\t\tFullMsg msg=new FullMsg(mob,target,this,(auto?Affect.MASK_GENERAL:0)|Affect.MSG_THIEF_ACT,"<S-NAME> extract(s) "+amount+" gold of protection money from <T-NAME>.");\r\n+\t\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t\t{\r\n+\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t\t\tbeneficialAffect(mob,target,((Host.TIME_TICK_DELAY*Area.A_FULL_DAY)/Host.TICK_TIME));\r\n+\t\t\t\tCoins C=(Coins)CMClass.getItem("StdCoins");\r\n+\t\t\t\tC.setNumberOfCoins(amount);\r\n+\t\t\t\tC.recoverEnvStats();\r\n+\t\t\t\tmob.location().addItemRefuse(C,Item.REFUSE_PLAYER_DROP);\r\n+\t\t\t\tExternalPlay.get(mob,null,C,true);\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\telse\r\n+\t\t\tmaliciousFizzle(mob,target,"<T-NAME> seem(s) unintimidated by <S-NAME>.");\r\n+\t\treturn success;\r\n+\t}\r\n+\r\n }\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Robbery.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Robbery.java\nindex bd87a210a0..09791e15d1 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Robbery.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Robbery.java\n@@ -1,5 +1,141 @@\n package com.planet_ink.coffee_mud.Abilities.Thief;\r\n \r\n-public class Thief_Robbery\r\n+import com.planet_ink.coffee_mud.interfaces.*;\r\n+import com.planet_ink.coffee_mud.common.*;\r\n+import com.planet_ink.coffee_mud.utils.*;\r\n+import java.util.*;\r\n+\r\n+public class Thief_Robbery extends ThiefSkill\r\n {\r\n+\tpublic String ID() { return "Thief_Robbery"; }\r\n+\tpublic String name(){ return "Robbery";}\r\n+\tprotected int canAffectCode(){return CAN_MOBS;}\r\n+\tprotected int canTargetCode(){return CAN_MOBS;}\r\n+\tpublic int quality(){return Ability.MALICIOUS;}\r\n+\tprivate static final String[] triggerStrings = {"ROBBERY","ROB"};\r\n+\tpublic String[] triggerStrings(){return triggerStrings;}\r\n+\tpublic Environmental newInstance(){\treturn new Thief_Robbery();}\r\n+\tpublic Vector mobs=new Vector();\r\n+\r\n+\tpublic boolean okAffect(Environmental myHost, Affect msg)\r\n+\t{\r\n+\t\tif((msg.amITarget(affected))&&(mobs.contains(msg.source())))\r\n+\t\t{\r\n+\t\t\tif((msg.targetMinor()==Affect.TYP_BUY)\r\n+\t\t\t   ||(msg.targetMinor()==Affect.TYP_SELL)\r\n+\t\t\t   ||(msg.targetMinor()==Affect.TYP_VALUE)\r\n+\t\t\t   ||(msg.targetMinor()==Affect.TYP_VIEW))\r\n+\t\t\t{\r\n+\t\t\t\tmsg.source().tell(affected.name()+" looks unwilling to do business with you.");\r\n+\t\t\t\treturn false;\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\treturn super.okAffect(myHost,msg);\r\n+\t}\r\n+\t\r\n+\tpublic boolean invoke(MOB mob, Vector commands, Environmental givenTarget, boolean auto)\r\n+\t{\r\n+\t\tif(commands.size()<2)\r\n+\t\t{\r\n+\t\t\tmob.tell("Rob what from whom?");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tString itemToSteal=(String)commands.elementAt(0);\r\n+\r\n+\t\tMOB target=mob.location().fetchInhabitant(Util.combine(commands,1));\r\n+\t\tif((target==null)&&(givenTarget!=null)&&(givenTarget instanceof MOB)) target=(MOB)givenTarget;\r\n+\t\tif((target==null)||(target.amDead())||(!Sense.canBeSeenBy(target,mob)))\r\n+\t\t{\r\n+\t\t\tmob.tell("You don\'t see \'"+Util.combine(commands,1)+"\' here.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tint levelDiff=target.envStats().level()-mob.envStats().level();\r\n+\r\n+\t\tif(((!target.mayIFight(mob))&&(levelDiff<10))||(!(target instanceof ShopKeeper)))\r\n+\t\t{\r\n+\t\t\tmob.tell("You cannot rob from "+target.charStats().himher()+".");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tif(!super.invoke(mob,commands,givenTarget,auto))\r\n+\t\t\treturn false;\r\n+\r\n+\t\tShopKeeper shop=(ShopKeeper)target;\r\n+\t\tEnvironmental stolen=shop.getStock(itemToSteal,mob);\r\n+\t\tif(stolen!=null)\r\n+\t\t{\r\n+\t\t\tif((stolen instanceof Ability)\r\n+\t\t\t||(stolen instanceof MOB)\r\n+\t\t\t||(stolen instanceof Room)\r\n+\t\t\t||(stolen instanceof LandTitle))\r\n+\t\t\t{\r\n+\t\t\t\tmob.tell(mob,target,stolen,"You cannot rob \'<O-NAME>\' from <T-NAME>.");\r\n+\t\t\t\treturn false;\r\n+\t\t\t}\r\n+\t\t\tif(!shop.doIHaveThisInStock(stolen.name(),mob))\r\n+\t\t\t\tstolen=null;\r\n+\t\t}\r\n+\r\n+\t\tint discoverChance=(target.charStats().getStat(CharStats.WISDOM)*5)-(levelDiff*20);\r\n+\t\tif(!Sense.canBeSeenBy(mob,target))\r\n+\t\t\tdiscoverChance+=50;\r\n+\t\tif(discoverChance>95) discoverChance=95;\r\n+\t\tif(discoverChance<5) discoverChance=5;\r\n+\t\tboolean success=profficiencyCheck(-(levelDiff*((!Sense.canBeSeenBy(mob,target))?5:15)),auto);\r\n+\r\n+\t\tif(!success)\r\n+\t\t{\r\n+\t\t\tif(Dice.rollPercentage()>discoverChance)\r\n+\t\t\t{\r\n+\t\t\t\tFullMsg msg=new FullMsg(mob,target,this,Affect.MSG_NOISYMOVEMENT,auto?"":"You fumble the attempt to rob <T-NAMESELF>; <T-NAME> spots you!",Affect.MSG_NOISYMOVEMENT,auto?"":"<S-NAME> tries to rob you and fails!",Affect.MSG_NOISYMOVEMENT,auto?"":"<S-NAME> tries to rob <T-NAME> and fails!");\r\n+\t\t\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t\t}\r\n+\t\t\telse\r\n+\t\t\t\tmob.tell(mob,target,null,auto?"":"You fumble the attempt to rob <T-NAME>.");\r\n+\t\t}\r\n+\t\telse\r\n+\t\t{\r\n+\t\t\tString str=null;\r\n+\t\t\tif(!auto)\r\n+\t\t\t\tif(stolen!=null)\r\n+\t\t\t\t\tstr="<S-NAME> rob(s) "+stolen.name()+" from <T-NAMESELF>.";\r\n+\t\t\t\telse\r\n+\t\t\t\t\tstr="<S-NAME> attempt(s) to rob <T-HIM-HER>, but it doesn\'t appear "+target.charStats().heshe()+" has that in <T-HIS-HER> inventory!";\r\n+\r\n+\t\t\tboolean alreadyFighting=(mob.getVictim()==target)||(target.getVictim()==mob);\r\n+\t\t\tString hisStr=str;\r\n+\t\t\tint hisCode=Affect.MSG_THIEF_ACT | ((target.mayIFight(mob))?Affect.MASK_MALICIOUS:0);\r\n+\t\t\tif(Dice.rollPercentage()<discoverChance)\r\n+\t\t\t\thisStr=null;\r\n+\r\n+\t\t\tFullMsg msg=new FullMsg(mob,target,this,Affect.MSG_THIEF_ACT,str,hisCode,hisStr,Affect.NO_EFFECT,null);\r\n+\t\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t\t{\r\n+\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t\t\tThief_Robbery A=(Thief_Robbery)target.fetchAffect(ID());\r\n+\t\t\t\tif(A!=null)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tmobs.addElement(mob);\r\n+\t\t\t\t\tbeneficialAffect(mob,target,0);\r\n+\t\t\t\t}\r\n+\t\t\t\telse\r\n+\t\t\t\t\tA.mobs.addElement(mob);\r\n+\t\t\t\tif(((hisStr==null)||mob.isMonster())&&(!alreadyFighting))\r\n+\t\t\t\t{\r\n+\t\t\t\t\tif(target.getVictim()==mob)\r\n+\t\t\t\t\t\ttarget.makePeace();\r\n+\t\t\t\t}\r\n+\t\t\t\tif(stolen!=null)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tVector products=shop.removeSellableProduct(stolen.name(),mob);\r\n+\t\t\t\t\tstolen=(Environmental)products.firstElement();\r\n+\t\t\t\t\tmsg=new FullMsg(mob,stolen,null,Affect.MSG_GET,Affect.MSG_GET,Affect.MSG_NOISE,null);\r\n+\t\t\t\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t\t\t}\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\treturn success;\r\n+\t}\r\n+\r\n }\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Safecracking.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Safecracking.java\nindex 186ce2bffd..b9755e7623 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Safecracking.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Safecracking.java\n@@ -1,5 +1,42 @@\n package com.planet_ink.coffee_mud.Abilities.Thief;\r\n \r\n-public class Thief_Safecracking\r\n+import com.planet_ink.coffee_mud.interfaces.*;\r\n+import com.planet_ink.coffee_mud.common.*;\r\n+import com.planet_ink.coffee_mud.utils.*;\r\n+import java.util.*;\r\n+\r\n+public class Thief_Safecracking extends ThiefSkill\r\n {\r\n+\tpublic String ID() { return "Thief_Safecracking"; }\r\n+\tpublic String name(){ return "Safecracking";}\r\n+\tpublic String displayText(){ return "";}\r\n+\tprotected int canAffectCode(){return CAN_MOBS;}\r\n+\tprotected int canTargetCode(){return 0;}\r\n+\tpublic int quality(){return Ability.OK_SELF;}\r\n+\tpublic Environmental newInstance(){\treturn new Thief_Safecracking();}\r\n+\tpublic boolean isAutoInvoked(){return true;}\r\n+\tpublic boolean canBeUninvoked(){return false;}\r\n+\t\r\n+\t\r\n+\tpublic boolean okAffect(Environmental myHost, Affect affect)\r\n+\t{\r\n+\t\tif((affected==null)||(!(affected instanceof MOB)))\r\n+\t\t\treturn super.okAffect(myHost,affect);\r\n+\r\n+\t\tMOB mob=(MOB)affected;\r\n+\t\tif((affect.amISource(mob))\r\n+\t\t&&(affect.tool()!=null)\r\n+\t\t&&(affect.tool().ID().equals("Thief_Pick")))\r\n+\t\t{\r\n+\t\t\thelpProfficiency(mob);\r\n+\t\t\tAbility A=mob.fetchAbility("Thief_Pick");\r\n+\t\t\tA.setAbilityCode(10-(profficiency()/10));\r\n+\t\t\tif((affect.target()!=null)&&(Dice.rollPercentage()<profficiency()))\r\n+\t\t\t{\r\n+\t\t\t\tA=affect.target().fetchAffect("Spell_WizardLock");\r\n+\t\t\t\tif(A!=null) A.unInvoke();\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\treturn super.okAffect(myHost,affect);\r\n+\t}\r\n }\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_SenseLaw.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_SenseLaw.java\nindex cbb0c87fac..11eb544578 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_SenseLaw.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_SenseLaw.java\n@@ -1,5 +1,84 @@\n package com.planet_ink.coffee_mud.Abilities.Thief;\r\n \r\n-public class Thief_SenseLaw\r\n+import com.planet_ink.coffee_mud.interfaces.*;\r\n+import com.planet_ink.coffee_mud.common.*;\r\n+import com.planet_ink.coffee_mud.utils.*;\r\n+import java.util.*;\r\n+\r\n+public class Thief_SenseLaw extends ThiefSkill\r\n {\r\n+\tpublic String ID() { return "Thief_SenseLaw"; }\r\n+\tpublic String name(){ return "Sense Law";}\r\n+\tpublic String displayText(){ return "";}\r\n+\tprotected int canAffectCode(){return CAN_MOBS;}\r\n+\tprotected int canTargetCode(){return 0;}\r\n+\tpublic int quality(){return Ability.OK_SELF;}\r\n+\tpublic Environmental newInstance(){\treturn new Thief_SenseLaw();}\r\n+\tpublic boolean isAutoInvoked(){return true;}\r\n+\tpublic boolean canBeUninvoked(){return false;}\r\n+\tpublic static final Vector empty=new Vector();\r\n+\tprotected Room oldroom=null;\r\n+\tprotected String lastReport="";\r\n+\t\r\n+\tpublic Vector getLawMen(Room room, Behavior B)\r\n+\t{\r\n+\t\tif(room==null) return empty;\r\n+\t\tif(room.numInhabitants()==0) return empty;\r\n+\t\tif(B==null) return empty;\r\n+\t\tVector V=new Vector();\r\n+\t\tfor(int m=0;m>room.numInhabitants();m++)\r\n+\t\t{\r\n+\t\t\tMOB M=(MOB)room.fetchInhabitant(m);\r\n+\t\t\tif((M!=null)&&(M.isMonster())&&(B.modifyBehavior(M,null)))\r\n+\t\t\t\tV.addElement(M);\r\n+\t\t}\r\n+\t\treturn V;\r\n+\t}\r\n+\t\r\n+\tpublic boolean tick(Tickable ticking, int tickID)\r\n+\t{\r\n+\t\tif((affected!=null)&&(affected instanceof MOB))\r\n+\t\t{\r\n+\t\t\tMOB mob=(MOB)affected;\r\n+\t\t\tif(mob.location()!=null)\r\n+\t\t\t{\r\n+\t\t\t\tBehavior B=mob.location().getArea().fetchBehavior("Arrest");\r\n+\t\t\t\tif(B==null) return super.tick(ticking,tickID);\r\n+\t\t\t\tStringBuffer buf=new StringBuffer("");\r\n+\t\t\t\tVector V=getLawMen(mob.location(),B);\r\n+\t\t\t\tfor(int l=0;l<V.size();l++)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tMOB M=(MOB)V.elementAt(l);\r\n+\t\t\t\t\tif(Sense.canBeSeenBy(M,mob))\r\n+\t\t\t\t\t\tbuf.append(M.name()+" is an officer of the law.  ");\r\n+\t\t\t\t\telse\r\n+\t\t\t\t\t\tbuf.append("There is an officer of the law here.  ");\r\n+\t\t\t\t}\r\n+\t\t\t\tfor(int d=0;d<Directions.NUM_DIRECTIONS;d++)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tRoom R=mob.location().getRoomInDir(d);\r\n+\t\t\t\t\tExit E=mob.location().getExitInDir(d);\r\n+\t\t\t\t\tif((R!=null)&&(E!=null)&&(E.isOpen()))\r\n+\t\t\t\t\t{\r\n+\t\t\t\t\t\tV=getLawMen(R,B);\r\n+\t\t\t\t\t\tfor(int l=0;l<V.size();l++)\r\n+\t\t\t\t\t\t{\r\n+\t\t\t\t\t\t\tMOB M=(MOB)V.elementAt(l);\r\n+\t\t\t\t\t\t\tbuf.append("There is an officer of the law "+Directions.getInDirectionName(d)+".  ");\r\n+\t\t\t\t\t\t}\r\n+\t\t\t\t\t}\r\n+\t\t\t\t}\r\n+\t\t\t\tif((buf.length()>0)\r\n+\t\t\t\t&&(profficiencyCheck(0,false))\r\n+\t\t\t\t&&((mob.location()!=oldroom)||(!buf.toString().equals(lastReport))))\r\n+\t\t\t\t{\r\n+\t\t\t\t\tmob.tell("You sense: "+buf.toString());\r\n+\t\t\t\t\toldroom=mob.location();\r\n+\t\t\t\t\thelpProfficiency(mob);\r\n+\t\t\t\t\tlastReport=buf.toString();\r\n+\t\t\t\t}\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\treturn super.tick(ticking,tickID);\r\n+\t}\r\n }\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_SlipItem.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_SlipItem.java\nindex 229994d66d..af8eaf3a97 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_SlipItem.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_SlipItem.java\n@@ -1,5 +1,110 @@\n package com.planet_ink.coffee_mud.Abilities.Thief;\r\n \r\n-public class Thief_SlipItem\r\n+import com.planet_ink.coffee_mud.interfaces.*;\r\n+import com.planet_ink.coffee_mud.common.*;\r\n+import com.planet_ink.coffee_mud.utils.*;\r\n+import java.util.*;\r\n+\r\n+public class Thief_SlipItem extends ThiefSkill\r\n {\r\n+\tpublic String ID() { return "Thief_SlipItem"; }\r\n+\tpublic String name(){ return "Slip Item";}\r\n+\tprotected int canAffectCode(){return 0;}\r\n+\tprotected int canTargetCode(){return CAN_MOBS;}\r\n+\tpublic int quality(){return Ability.MALICIOUS;}\r\n+\tprivate static final String[] triggerStrings = {"SLIPITEM"};\r\n+\tpublic String[] triggerStrings(){return triggerStrings;}\r\n+\tpublic Environmental newInstance(){\treturn new Thief_SlipItem();}\r\n+\r\n+\tpublic boolean invoke(MOB mob, Vector commands, Environmental givenTarget, boolean auto)\r\n+\t{\r\n+\t\tif(commands.size()<2)\r\n+\t\t{\r\n+\t\t\tmob.tell("Slip what off of whom?");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tString itemToSteal=(String)commands.elementAt(0);\r\n+\r\n+\t\tMOB target=mob.location().fetchInhabitant(Util.combine(commands,1));\r\n+\t\tif((target==null)||(target.amDead())||(!Sense.canBeSeenBy(target,mob)))\r\n+\t\t{\r\n+\t\t\tmob.tell("You don\'t see \'"+Util.combine(commands,1)+"\' here.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tif(mob.isInCombat())\r\n+\t\t{\r\n+\t\t\tmob.tell("Not while you are fighting!");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tint levelDiff=target.envStats().level()-mob.envStats().level();\r\n+\r\n+\t\tif((!target.mayIFight(mob))&&(levelDiff<10))\r\n+\t\t{\r\n+\t\t\tmob.tell("You cannot slip anything off of "+target.charStats().himher()+".");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tif(!super.invoke(mob,commands,givenTarget,auto))\r\n+\t\t\treturn false;\r\n+\r\n+\t\tItem stolen=target.fetchWornItem(itemToSteal);\r\n+\t\tif((stolen==null)||(!Sense.canBeSeenBy(stolen,mob)))\r\n+\t\t{\r\n+\t\t\tmob.tell(target.name()+" doesn\'t seem to be wearing \'"+itemToSteal+"\'.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tif(stolen.amWearingAt(Item.WIELD))\r\n+\t\t{\r\n+\t\t\tmob.tell(target.name()+" is wielding "+stolen.name()+"! Try disarm!");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\r\n+\t\tint discoverChance=(target.charStats().getStat(CharStats.WISDOM)*5)-(levelDiff*5);\r\n+\t\tif(!Sense.canBeSeenBy(mob,target))\r\n+\t\t\tdiscoverChance+=50;\r\n+\t\tif(discoverChance>95) discoverChance=95;\r\n+\t\tif(discoverChance<5) discoverChance=5;\r\n+\t\tboolean success=profficiencyCheck(-(levelDiff*((!Sense.canBeSeenBy(mob,target))?5:15)),auto);\r\n+\r\n+\t\tif(!success)\r\n+\t\t{\r\n+\t\t\tif(Dice.rollPercentage()>discoverChance)\r\n+\t\t\t{\r\n+\t\t\t\tFullMsg msg=new FullMsg(mob,target,this,Affect.MSG_NOISYMOVEMENT,auto?"":"You fumble the attempt to slip "+stolen.name()+" off <T-NAME>; <T-NAME> spots you!",Affect.MSG_NOISYMOVEMENT,auto?"":"<S-NAME> tries to slip "+stolen.name()+" off you and fails!",Affect.MSG_NOISYMOVEMENT,auto?"":"<S-NAME> tries to slip "+stolen.name()+" off <T-NAME> and fails!");\r\n+\t\t\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t\t}\r\n+\t\t\telse\r\n+\t\t\t\tmob.tell(auto?"":"You fumble the attempt to slip "+stolen.name()+" off "+target.name()+".");\r\n+\t\t}\r\n+\t\telse\r\n+\t\t{\r\n+\t\t\tString str=null;\r\n+\t\t\tif(!auto)\r\n+\t\t\t\tif((stolen!=null)&&(!stolen.amWearingAt(Item.INVENTORY)))\r\n+\t\t\t\t\tstr="<S-NAME> slip(s) "+stolen.name()+" off <T-NAMESELF>.";\r\n+\t\t\t\telse\r\n+\t\t\t\t\tstr="<S-NAME> attempt(s) to slip "+stolen.name()+" off <T-HIM-HER>, but it doesn\'t appear "+target.charStats().heshe()+" has that in <T-HIS-HER> inventory!";\r\n+\r\n+\t\t\tboolean alreadyFighting=(mob.getVictim()==target)||(target.getVictim()==mob);\r\n+\t\t\tString hisStr=str;\r\n+\t\t\tint hisCode=Affect.MSG_THIEF_ACT | ((target.mayIFight(mob))?Affect.MASK_MALICIOUS:0);\r\n+\t\t\tif(Dice.rollPercentage()<discoverChance)\r\n+\t\t\t\thisStr=null;\r\n+\r\n+\t\t\tFullMsg msg=new FullMsg(mob,target,this,Affect.MSG_THIEF_ACT,str,hisCode,hisStr,Affect.NO_EFFECT,null);\r\n+\t\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t\t{\r\n+\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t\t\tif(((hisStr==null)||mob.isMonster())&&(!alreadyFighting))\r\n+\t\t\t\t{\r\n+\t\t\t\t\tif(target.getVictim()==mob)\r\n+\t\t\t\t\t\ttarget.makePeace();\r\n+\t\t\t\t}\r\n+\t\t\t\tmsg=new FullMsg(target,stolen,null,Affect.MSG_GET,Affect.MSG_GET,Affect.MSG_NOISE,null);\r\n+\t\t\t\tif(target.location().okAffect(target,msg))\r\n+\t\t\t\t\ttarget.location().send(mob,msg);\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\treturn success;\r\n+\t}\r\n }\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Steal.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Steal.java\nindex a4eacbe4a4..f81967145b 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Steal.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_Steal.java\n@@ -26,6 +26,7 @@ public class Thief_Steal extends ThiefSkill\n \t\tString itemToSteal=(String)commands.elementAt(0);\r\n \r\n \t\tMOB target=mob.location().fetchInhabitant(Util.combine(commands,1));\r\n+\t\tif((target==null)&&(givenTarget!=null)&&(givenTarget instanceof MOB)) target=(MOB)givenTarget;\r\n \t\tif((target==null)||(target.amDead())||(!Sense.canBeSeenBy(target,mob)))\r\n \t\t{\r\n \t\t\tmob.tell("You don\'t see \'"+Util.combine(commands,1)+"\' here.");\r\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_StripItem.java b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_StripItem.java\nindex af5994ccf4..823dda1e31 100644\n--- a/com/planet_ink/coffee_mud/Abilities/Thief/Thief_StripItem.java\n+++ b/com/planet_ink/coffee_mud/Abilities/Thief/Thief_StripItem.java\n@@ -1,5 +1,89 @@\n package com.planet_ink.coffee_mud.Abilities.Thief;\r\n \r\n-public class Thief_StripItem\r\n+import com.planet_ink.coffee_mud.interfaces.*;\r\n+import com.planet_ink.coffee_mud.common.*;\r\n+import com.planet_ink.coffee_mud.utils.*;\r\n+import java.util.*;\r\n+\r\n+public class Thief_StripItem extends ThiefSkill\r\n {\r\n+\tpublic String ID() { return "Thief_StripItem"; }\r\n+\tpublic String name(){ return "Strip Item";}\r\n+\tprotected int canAffectCode(){return 0;}\r\n+\tprotected int canTargetCode(){return CAN_MOBS;}\r\n+\tpublic int quality(){return Ability.MALICIOUS;}\r\n+\tprivate static final String[] triggerStrings = {"STRIPITEM"};\r\n+\tpublic String[] triggerStrings(){return triggerStrings;}\r\n+\tpublic Environmental newInstance(){\treturn new Thief_StripItem();}\r\n+\r\n+\tpublic boolean invoke(MOB mob, Vector commands, Environmental givenTarget, boolean auto)\r\n+\t{\r\n+\t\tif(commands.size()<2)\r\n+\t\t{\r\n+\t\t\tmob.tell("Strip what off of whom?");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tString itemToSteal=(String)commands.elementAt(0);\r\n+\r\n+\t\tMOB target=mob.location().fetchInhabitant(Util.combine(commands,1));\r\n+\t\tif((target==null)&&(givenTarget!=null)&&(givenTarget instanceof MOB)) target=(MOB)givenTarget;\r\n+\t\tif((target==null)||(target.amDead())||(!Sense.canBeSeenBy(target,mob)))\r\n+\t\t{\r\n+\t\t\tmob.tell("You don\'t see \'"+Util.combine(commands,1)+"\' here.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tint levelDiff=target.envStats().level()-mob.envStats().level();\r\n+\t\tif((!target.mayIFight(mob))&&(levelDiff<10))\r\n+\t\t{\r\n+\t\t\tmob.tell("You cannot strip anything off of "+target.charStats().himher()+".");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tif(!super.invoke(mob,commands,givenTarget,auto))\r\n+\t\t\treturn false;\r\n+\r\n+\t\tItem stolen=target.fetchWornItem(itemToSteal);\r\n+\t\tif((stolen==null)||(!Sense.canBeSeenBy(stolen,mob)))\r\n+\t\t{\r\n+\t\t\tmob.tell(target.name()+" doesn\'t seem to be wearing \'"+itemToSteal+"\'.");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tif(stolen.amWearingAt(Item.WIELD))\r\n+\t\t{\r\n+\t\t\tmob.tell(target.name()+" is wielding "+stolen.name()+"! Try disarm!");\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\r\n+\t\tboolean success=profficiencyCheck(-(levelDiff*((!Sense.canBeSeenBy(mob,target))?5:15)),auto);\r\n+\r\n+\t\tif(!success)\r\n+\t\t{\r\n+\t\t\tFullMsg msg=new FullMsg(mob,target,this,Affect.MSG_NOISYMOVEMENT,auto?"":"You fumble the attempt to strip "+stolen.name()+" off <T-NAME>; <T-NAME> spots you!",Affect.MSG_NOISYMOVEMENT,auto?"":"<S-NAME> tries to strip "+stolen.name()+" off you and fails!",Affect.MSG_NOISYMOVEMENT,auto?"":"<S-NAME> tries to strip "+stolen.name()+" off <T-NAME> and fails!");\r\n+\t\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t}\r\n+\t\telse\r\n+\t\t{\r\n+\t\t\tString str=null;\r\n+\t\t\tif(!auto) str="<S-NAME> strip(s) "+stolen.name()+" off <T-NAMESELF>.";\r\n+\r\n+\t\t\tboolean alreadyFighting=(mob.getVictim()==target)||(target.getVictim()==mob);\r\n+\t\t\tString hisStr=str;\r\n+\t\t\tint hisCode=Affect.MSG_THIEF_ACT | ((target.mayIFight(mob))?Affect.MASK_MALICIOUS:0);\r\n+\r\n+\t\t\tFullMsg msg=new FullMsg(mob,target,this,Affect.MSG_THIEF_ACT,str,hisCode,hisStr,Affect.NO_EFFECT,null);\r\n+\t\t\tif(mob.location().okAffect(mob,msg))\r\n+\t\t\t{\r\n+\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t\t\tif(((hisStr==null)||mob.isMonster())&&(!alreadyFighting))\r\n+\t\t\t\t{\r\n+\t\t\t\t\tif(target.getVictim()==mob)\r\n+\t\t\t\t\t\ttarget.makePeace();\r\n+\t\t\t\t}\r\n+\t\t\t\tmsg=new FullMsg(target,stolen,null,Affect.MSG_GET,Affect.MSG_GET,Affect.MSG_NOISE,null);\r\n+\t\t\t\tif(target.location().okAffect(target,msg))\r\n+\t\t\t\t\ttarget.location().send(mob,msg);\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\treturn success;\r\n+\t}\r\n }\r\ndiff --git a/com/planet_ink/coffee_mud/Behaviors/Arrest.java b/com/planet_ink/coffee_mud/Behaviors/Arrest.java\nindex 909b79b986..89521eac4f 100644\n--- a/com/planet_ink/coffee_mud/Behaviors/Arrest.java\n+++ b/com/planet_ink/coffee_mud/Behaviors/Arrest.java\n@@ -80,7 +80,13 @@ public class Arrest extends StdBehavior\n \t\t\t\treturn true;\r\n \t\t\t}\r\n \t\t\telse\r\n+\t\t\t{\r\n+\t\t\t\tif((mob.isMonster())\r\n+\t\t\t\t&&(mob.location()!=null)\r\n+\t\t\t\t&&(isElligibleOfficer(mob,mob.location().getArea())))\r\n+\t\t\t\t\treturn true;\r\n \t\t\t\treturn (getWarrant(mob,0))!=null;\r\n+\t\t\t}\r\n \t\t}\r\n \t\treturn super.modifyBehavior(mob,O);\r\n \t}\r\ndiff --git a/com/planet_ink/coffee_mud/Behaviors/Bardness.java b/com/planet_ink/coffee_mud/Behaviors/Bardness.java\nindex 890509ed28..16bbaedbf7 100644\n--- a/com/planet_ink/coffee_mud/Behaviors/Bardness.java\n+++ b/com/planet_ink/coffee_mud/Behaviors/Bardness.java\n@@ -19,9 +19,12 @@ public class Bardness extends CombatAbilities\n \t\tsuper.startBehavior(forMe);\r\n \t\tif(!(forMe instanceof MOB)) return;\r\n \t\tMOB mob=(MOB)forMe;\r\n-\t\tif(!mob.baseCharStats().getCurrentClass().ID().equals("Bard"))\r\n+\t\tString className="Bard";\r\n+\t\tif((getParms().length()>0)&&(CMClass.getCharClass(getParms())!=null))\r\n+\t\t\tclassName=getParms();\r\n+\t\tif(!mob.baseCharStats().getCurrentClass().ID().equals(className))\r\n \t\t{\r\n-\t\t\tmob.baseCharStats().setCurrentClass(CMClass.getCharClass("Bard"));\r\n+\t\t\tmob.baseCharStats().setCurrentClass(CMClass.getCharClass(className));\r\n \t\t\tmob.recoverCharStats();\r\n \t\t}\r\n \t\t// now equip character...\r\ndiff --git a/com/planet_ink/coffee_mud/Behaviors/Clericness.java b/com/planet_ink/coffee_mud/Behaviors/Clericness.java\nindex 24c37408d4..e8d2e3748f 100644\n--- a/com/planet_ink/coffee_mud/Behaviors/Clericness.java\n+++ b/com/planet_ink/coffee_mud/Behaviors/Clericness.java\n@@ -20,9 +20,12 @@ public class Clericness extends CombatAbilities\n \t\tsuper.startBehavior(forMe);\r\n \t\tif(!(forMe instanceof MOB)) return;\r\n \t\tMOB mob=(MOB)forMe;\r\n-\t\tif(!mob.baseCharStats().getCurrentClass().ID().equals("Cleric"))\r\n+\t\tString className="Cleric";\r\n+\t\tif((getParms().length()>0)&&(CMClass.getCharClass(getParms())!=null))\r\n+\t\t\tclassName=getParms();\r\n+\t\tif(!mob.baseCharStats().getCurrentClass().ID().equals(className))\r\n \t\t{\r\n-\t\t\tmob.baseCharStats().setCurrentClass(CMClass.getCharClass("Cleric"));\r\n+\t\t\tmob.baseCharStats().setCurrentClass(CMClass.getCharClass(className));\r\n \t\t\tmob.recoverCharStats();\r\n \t\t}\r\n \t\t// now equip character...\r\ndiff --git a/com/planet_ink/coffee_mud/Behaviors/CombatAbilities.java b/com/planet_ink/coffee_mud/Behaviors/CombatAbilities.java\nindex 92618613e0..5b57755017 100644\n--- a/com/planet_ink/coffee_mud/Behaviors/CombatAbilities.java\n+++ b/com/planet_ink/coffee_mud/Behaviors/CombatAbilities.java\n@@ -22,7 +22,7 @@ public class CombatAbilities extends StdBehavior\n \t\t\tAbility A=mob.fetchAbility(a);\r\n \t\t\tif(A!=null)\r\n \t\t\t{\r\n-\t\t\t\tA.setProfficiency(50);\r\n+\t\t\t\tif(A.profficiency()<50)\tA.setProfficiency(50);\r\n \t\t\t\toldAbilities.addElement(A);\r\n \t\t\t}\r\n \t\t}\r\ndiff --git a/com/planet_ink/coffee_mud/Behaviors/Druidness.java b/com/planet_ink/coffee_mud/Behaviors/Druidness.java\nindex b9b309e8b0..8dc2e7de39 100644\n--- a/com/planet_ink/coffee_mud/Behaviors/Druidness.java\n+++ b/com/planet_ink/coffee_mud/Behaviors/Druidness.java\n@@ -19,9 +19,12 @@ public class Druidness extends CombatAbilities\n \t\tsuper.startBehavior(forMe);\r\n \t\tif(!(forMe instanceof MOB)) return;\r\n \t\tMOB mob=(MOB)forMe;\r\n-\t\tif(!mob.baseCharStats().getCurrentClass().ID().equals("Druid"))\r\n+\t\tString className="Druid";\r\n+\t\tif((getParms().length()>0)&&(CMClass.getCharClass(getParms())!=null))\r\n+\t\t\tclassName=getParms();\r\n+\t\tif(!mob.baseCharStats().getCurrentClass().ID().equals(className))\r\n \t\t{\r\n-\t\t\tmob.baseCharStats().setCurrentClass(CMClass.getCharClass("Druid"));\r\n+\t\t\tmob.baseCharStats().setCurrentClass(CMClass.getCharClass(className));\r\n \t\t\tmob.recoverCharStats();\r\n \t\t}\r\n \t\t// now equip character...\r\ndiff --git a/com/planet_ink/coffee_mud/Behaviors/Fighterness.java b/com/planet_ink/coffee_mud/Behaviors/Fighterness.java\nindex b982272083..f7c315b5c3 100644\n--- a/com/planet_ink/coffee_mud/Behaviors/Fighterness.java\n+++ b/com/planet_ink/coffee_mud/Behaviors/Fighterness.java\n@@ -18,9 +18,12 @@ public class Fighterness extends CombatAbilities\n \t\tsuper.startBehavior(forMe);\r\n \t\tif(!(forMe instanceof MOB)) return;\r\n \t\tMOB mob=(MOB)forMe;\r\n-\t\tif(!mob.baseCharStats().getCurrentClass().ID().equals("Fighter"))\r\n+\t\tString className="Fighter";\r\n+\t\tif((getParms().length()>0)&&(CMClass.getCharClass(getParms())!=null))\r\n+\t\t\tclassName=getParms();\r\n+\t\tif(!mob.baseCharStats().getCurrentClass().ID().equals(className))\r\n \t\t{\r\n-\t\t\tmob.baseCharStats().setCurrentClass(CMClass.getCharClass("Fighter"));\r\n+\t\t\tmob.baseCharStats().setCurrentClass(CMClass.getCharClass(className));\r\n \t\t\tmob.recoverCharStats();\r\n \t\t}\r\n \t\t// now equip character...\r\ndiff --git a/com/planet_ink/coffee_mud/Behaviors/Mageness.java b/com/planet_ink/coffee_mud/Behaviors/Mageness.java\nindex f2832bed19..9806fdfcb3 100644\n--- a/com/planet_ink/coffee_mud/Behaviors/Mageness.java\n+++ b/com/planet_ink/coffee_mud/Behaviors/Mageness.java\n@@ -46,9 +46,12 @@ public class Mageness extends CombatAbilities\n \t\tsuper.startBehavior(forMe);\r\n \t\tif(!(forMe instanceof MOB)) return;\r\n \t\tMOB mob=(MOB)forMe;\r\n-\t\tif(!mob.baseCharStats().getCurrentClass().ID().equals("Mage"))\r\n+\t\tString className="Mage";\r\n+\t\tif((getParms().length()>0)&&(CMClass.getCharClass(getParms())!=null))\r\n+\t\t\tclassName=getParms();\r\n+\t\tif(!mob.baseCharStats().getCurrentClass().ID().equals(className))\r\n \t\t{\r\n-\t\t\tmob.baseCharStats().setCurrentClass(CMClass.getCharClass("Mage"));\r\n+\t\t\tmob.baseCharStats().setCurrentClass(CMClass.getCharClass(className));\r\n \t\t\tmob.recoverCharStats();\r\n \t\t}\r\n \t\t// now equip character...\r\ndiff --git a/com/planet_ink/coffee_mud/Behaviors/Thiefness.java b/com/planet_ink/coffee_mud/Behaviors/Thiefness.java\nindex 3d5255b62b..d85388adee 100644\n--- a/com/planet_ink/coffee_mud/Behaviors/Thiefness.java\n+++ b/com/planet_ink/coffee_mud/Behaviors/Thiefness.java\n@@ -19,9 +19,12 @@ public class Thiefness extends CombatAbilities\n \t\tsuper.startBehavior(forMe);\r\n \t\tif(!(forMe instanceof MOB)) return;\r\n \t\tMOB mob=(MOB)forMe;\r\n-\t\tif(!mob.baseCharStats().getCurrentClass().ID().equals("Thief"))\r\n+\t\tString className="Thief";\r\n+\t\tif((getParms().length()>0)&&(CMClass.getCharClass(getParms())!=null))\r\n+\t\t\tclassName=getParms();\r\n+\t\tif(!mob.baseCharStats().getCurrentClass().ID().equals(className))\r\n \t\t{\r\n-\t\t\tmob.baseCharStats().setCurrentClass(CMClass.getCharClass("Thief"));\r\n+\t\t\tmob.baseCharStats().setCurrentClass(CMClass.getCharClass(className));\r\n \t\t\tmob.recoverCharStats();\r\n \t\t}\r\n \t\t// now equip character...\r\ndiff --git a/com/planet_ink/coffee_mud/CharClasses/Burglar.java b/com/planet_ink/coffee_mud/CharClasses/Burglar.java\nindex 33e158e182..636d881df0 100644\n--- a/com/planet_ink/coffee_mud/CharClasses/Burglar.java\n+++ b/com/planet_ink/coffee_mud/CharClasses/Burglar.java\n@@ -53,13 +53,13 @@ public class Burglar extends Thief\n CMAble.addCharAbilityMapping(ID(),9,"Thief_Forgery",true);\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),9,"Thief_Listen",false);\r\n \t\t\t\r\n-CMAble.addCharAbilityMapping(ID(),10,"Thief_ImprovedHiding",true);\r\n+\t\t\tCMAble.addCharAbilityMapping(ID(),10,"Thief_ImprovedHiding",true);\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),10,"Thief_BackStab",false);\r\n \t\t\t\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),11,"Thief_Steal",true);\r\n-CMAble.addCharAbilityMapping(ID(),11,"Thief_AvoidTraps",false);\r\n+\t\t\tCMAble.addCharAbilityMapping(ID(),11,"Thief_AvoidTraps",false);\r\n \t\t\t\r\n-CMAble.addCharAbilityMapping(ID(),12,"Thief_SlipItem",true);\r\n+\t\t\tCMAble.addCharAbilityMapping(ID(),12,"Thief_SlipItem",true);\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),12,"Thief_Snatch",false);\r\n \t\t\t\r\n CMAble.addCharAbilityMapping(ID(),13,"Thief_PlantItem",true);\r\n@@ -71,22 +71,22 @@ CMAble.addCharAbilityMapping(ID(),13,"Thief_PlantItem",true);\n \t\t\tCMAble.addCharAbilityMapping(ID(),15,"Spell_ReadMagic",false);\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),15,"Thief_SilentGold",false);\r\n \t\t\t\r\n-CMAble.addCharAbilityMapping(ID(),16,"Thief_SafeCracking",true);\r\n+\t\t\tCMAble.addCharAbilityMapping(ID(),16,"Thief_SafeCracking",true);\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),16,"Spell_DetectInvisible",false);\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),16,"Thief_SilentLoot",false);\r\n \r\n \t\t\tCMAble.addCharAbilityMapping(ID(),17,"Skill_Attack2",true);\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),17,"Fighter_BlindFighting",false);\r\n \t\t\t\r\n-CMAble.addCharAbilityMapping(ID(),18,"Thief_Robbery",true);\r\n+\t\t\tCMAble.addCharAbilityMapping(ID(),18,"Thief_Robbery",true);\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),18,"Skill_Map",false);\r\n \t\t\t\r\n-CMAble.addCharAbilityMapping(ID(),19,"Thief_SenseLaw",true);\r\n+\t\t\tCMAble.addCharAbilityMapping(ID(),19,"Thief_SenseLaw",true);\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),19,"Thief_Distract",false);\r\n \t\t\t\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),20,"Thief_Lore",false);\r\n \t\t\t\r\n-CMAble.addCharAbilityMapping(ID(),21,"Thief_Racketeer",true);\r\n+\t\t\tCMAble.addCharAbilityMapping(ID(),21,"Thief_Racketeer",true);\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),21,"Thief_StripItem",false);\r\n \t\t\t\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),22,"Thief_UsePoison",true);\r\n@@ -95,10 +95,10 @@ CMAble.addCharAbilityMapping(ID(),21,"Thief_Racketeer",true);\n \t\t\tCMAble.addCharAbilityMapping(ID(),23,"Spell_AnalyzeDweomer",false);\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),23,"Fighter_Tumble",false);\r\n \t\t\t\r\n-CMAble.addCharAbilityMapping(ID(),24,"Thief_Con",true);\r\n+\t\t\tCMAble.addCharAbilityMapping(ID(),24,"Thief_Con",true);\r\n \t\t\tCMAble.addCharAbilityMapping(ID(),24,"Spell_ComprehendLangs",false);\r\n \r\n-CMAble.addCharAbilityMapping(ID(),25,"Thief_Embezzle",true);\r\n+\t\t\tCMAble.addCharAbilityMapping(ID(),25,"Thief_Embezzle",true);\r\n CMAble.addCharAbilityMapping(ID(),30,"Thief_ContractHit",true);\r\n \t\t}\r\n \t}\r\ndiff --git a/com/planet_ink/coffee_mud/CharClasses/Trapper.java b/com/planet_ink/coffee_mud/CharClasses/Trapper.java\nindex bfb6bcb55b..e6d6ec4127 100644\n--- a/com/planet_ink/coffee_mud/CharClasses/Trapper.java\n+++ b/com/planet_ink/coffee_mud/CharClasses/Trapper.java\n@@ -94,9 +94,9 @@ CMAble.addCharAbilityMapping(ID(),23,"AnimalTrading",true);\n \r\n CMAble.addCharAbilityMapping(ID(),24,"AnimalTraining",false);\r\n \r\n-\t\t\tCMAble.addCharAbilityMapping(ID(),25,"Thief_TrapImmunity",true);\r\n+CMAble.addCharAbilityMapping(ID(),25,"Thief_TrapImmunity",true);\r\n \t\t\t\r\n-\t\t\tCMAble.addCharAbilityMapping(ID(),25,"Thief_DeathTrap",true);\r\n+CMAble.addCharAbilityMapping(ID(),25,"Thief_DeathTrap",true);\r\n \t\t}\r\n \t}\r\n \tpublic String otherLimitations(){return "Sneak and Hide attempts will fail outside of the wild.";}\r\ndiff --git a/com/planet_ink/coffee_mud/Items/MiscMagic/GenMultiPotion.java b/com/planet_ink/coffee_mud/Items/MiscMagic/GenMultiPotion.java\nindex 46c8b0b5de..9dee1ae5fc 100644\n--- a/com/planet_ink/coffee_mud/Items/MiscMagic/GenMultiPotion.java\n+++ b/com/planet_ink/coffee_mud/Items/MiscMagic/GenMultiPotion.java\n@@ -37,7 +37,7 @@ public class GenMultiPotion extends GenWater implements Potion\n \r\n \tpublic String secretIdentity()\r\n \t{\r\n-\t\treturn StdScroll.makeSecretIdentity("potion",super.secretIdentity(),getSpells(this));\r\n+\t\treturn StdScroll.makeSecretIdentity("potion",super.secretIdentity(),"",getSpells(this));\r\n \t}\r\n \t\r\n \tpublic int value()\r\ndiff --git a/com/planet_ink/coffee_mud/Items/MiscMagic/GenPill.java b/com/planet_ink/coffee_mud/Items/MiscMagic/GenPill.java\nindex 7476a0e36d..696c07e6e8 100644\n--- a/com/planet_ink/coffee_mud/Items/MiscMagic/GenPill.java\n+++ b/com/planet_ink/coffee_mud/Items/MiscMagic/GenPill.java\n@@ -35,7 +35,7 @@ public class GenPill extends GenFood implements Pill\n \r\n \tpublic String secretIdentity()\r\n \t{\r\n-\t\treturn StdScroll.makeSecretIdentity("pill",super.secretIdentity(),getSpells(this));\r\n+\t\treturn StdScroll.makeSecretIdentity("pill",super.secretIdentity(),"",getSpells(this));\r\n \t}\r\n \r\n \tpublic String getSpellList()\r\ndiff --git a/com/planet_ink/coffee_mud/Items/MiscMagic/GenPotion.java b/com/planet_ink/coffee_mud/Items/MiscMagic/GenPotion.java\nindex 6c50cb27dc..ff67ac68d2 100644\n--- a/com/planet_ink/coffee_mud/Items/MiscMagic/GenPotion.java\n+++ b/com/planet_ink/coffee_mud/Items/MiscMagic/GenPotion.java\n@@ -38,7 +38,7 @@ public class GenPotion extends GenWater implements Potion\n \r\n \tpublic String secretIdentity()\r\n \t{\r\n-\t\treturn StdScroll.makeSecretIdentity("potion",super.secretIdentity(),getSpells(this));\r\n+\t\treturn StdScroll.makeSecretIdentity("potion",super.secretIdentity(),"",getSpells(this));\r\n \t}\r\n \t\r\n \tpublic int value()\r\ndiff --git a/com/planet_ink/coffee_mud/Items/MiscMagic/GenScroll.java b/com/planet_ink/coffee_mud/Items/MiscMagic/GenScroll.java\nindex 7dc94d12e8..7531650532 100644\n--- a/com/planet_ink/coffee_mud/Items/MiscMagic/GenScroll.java\n+++ b/com/planet_ink/coffee_mud/Items/MiscMagic/GenScroll.java\n@@ -50,7 +50,7 @@ public class GenScroll extends GenItem implements Scroll\n \r\n \tpublic String secretIdentity()\r\n \t{\r\n-\t\treturn StdScroll.makeSecretIdentity("scroll",super.secretIdentity(),getSpells())+" Charges: "+usesRemaining();\r\n+\t\treturn StdScroll.makeSecretIdentity("scroll",super.secretIdentity()," Charges: "+usesRemaining(),getSpells());\r\n \t}\r\n \r\n \tpublic String getScrollText()\r\ndiff --git a/com/planet_ink/coffee_mud/Items/MiscMagic/GenSuperPill.java b/com/planet_ink/coffee_mud/Items/MiscMagic/GenSuperPill.java\nindex ca13c8fd0c..46ba68b028 100644\n--- a/com/planet_ink/coffee_mud/Items/MiscMagic/GenSuperPill.java\n+++ b/com/planet_ink/coffee_mud/Items/MiscMagic/GenSuperPill.java\n@@ -101,7 +101,7 @@ public class GenSuperPill extends GenPill\n \r\n \tpublic String secretIdentity()\r\n \t{\r\n-\t\tString id=StdScroll.makeSecretIdentity("super pill",super.secretIdentity(),getSpells(this));\r\n+\t\tString id=StdScroll.makeSecretIdentity("super pill",super.secretIdentity(),"",getSpells(this));\r\n \t\treturn id;\r\n \t}\r\n \r\ndiff --git a/com/planet_ink/coffee_mud/Items/MiscMagic/ScrollSpell.java b/com/planet_ink/coffee_mud/Items/MiscMagic/ScrollSpell.java\nindex 5a2766cedf..207fba87be 100644\n--- a/com/planet_ink/coffee_mud/Items/MiscMagic/ScrollSpell.java\n+++ b/com/planet_ink/coffee_mud/Items/MiscMagic/ScrollSpell.java\n@@ -30,6 +30,6 @@ public class ScrollSpell extends StdScroll\n \r\n \tpublic String secretIdentity()\r\n \t{\r\n-\t\treturn StdScroll.makeSecretIdentity("scroll",super.secretIdentity(),getSpells());\r\n+\t\treturn StdScroll.makeSecretIdentity("scroll",super.secretIdentity()," Charges: "+usesRemaining(),getSpells());\r\n \t}\r\n }\r\ndiff --git a/com/planet_ink/coffee_mud/Items/MiscMagic/StdPill.java b/com/planet_ink/coffee_mud/Items/MiscMagic/StdPill.java\nindex 9f4e19ddac..7d17e32d38 100644\n--- a/com/planet_ink/coffee_mud/Items/MiscMagic/StdPill.java\n+++ b/com/planet_ink/coffee_mud/Items/MiscMagic/StdPill.java\n@@ -33,7 +33,7 @@ public class StdPill extends StdFood implements Pill\n \r\n \tpublic String secretIdentity()\r\n \t{\r\n-\t\treturn StdScroll.makeSecretIdentity("pill",super.secretIdentity(),getSpells(this));\r\n+\t\treturn StdScroll.makeSecretIdentity("pill",super.secretIdentity(),"",getSpells(this));\r\n \t}\r\n \r\n \tpublic void eatIfAble(MOB mob, Pill me)\r\ndiff --git a/com/planet_ink/coffee_mud/Items/MiscMagic/StdPotion.java b/com/planet_ink/coffee_mud/Items/MiscMagic/StdPotion.java\nindex c980ced28f..3814b4b579 100644\n--- a/com/planet_ink/coffee_mud/Items/MiscMagic/StdPotion.java\n+++ b/com/planet_ink/coffee_mud/Items/MiscMagic/StdPotion.java\n@@ -109,7 +109,7 @@ public class StdPotion extends StdDrink implements Potion\n \r\n \tpublic String secretIdentity()\r\n \t{\r\n-\t\treturn StdScroll.makeSecretIdentity("potion",super.secretIdentity(),getSpells(this));\r\n+\t\treturn StdScroll.makeSecretIdentity("potion",super.secretIdentity(),"",getSpells(this));\r\n \t}\r\n \r\n \tpublic boolean okAffect(Environmental myHost, Affect affect)\r\ndiff --git a/com/planet_ink/coffee_mud/Items/MiscMagic/StdScroll.java b/com/planet_ink/coffee_mud/Items/MiscMagic/StdScroll.java\nindex 6272b5bad8..8b42a9d2ef 100644\n--- a/com/planet_ink/coffee_mud/Items/MiscMagic/StdScroll.java\n+++ b/com/planet_ink/coffee_mud/Items/MiscMagic/StdScroll.java\n@@ -80,26 +80,31 @@ public class StdScroll extends StdItem implements MiscMagic, Scroll\n \r\n \tpublic String secretIdentity()\r\n \t{\r\n-\t\treturn StdScroll.makeSecretIdentity("scroll",super.secretIdentity(),getSpells())+" Charges: "+usesRemaining();\r\n+\t\treturn StdScroll.makeSecretIdentity("scroll",super.secretIdentity()," Charges: "+usesRemaining(),getSpells());\r\n \t}\r\n \r\n-\tpublic static String makeSecretIdentity(String thang, String id, Vector V)\r\n+\tpublic static String makeSecretIdentity(String thang, String id, String more, Vector V)\r\n \t{\r\n-\t\tString add="";\r\n+\t\tStringBuffer add=new StringBuffer("");\r\n \t\tfor(int v=0;v<V.size();v++)\r\n \t\t{\r\n \t\t\tif(v==0)\r\n-\t\t\t\tadd="A "+thang+" of ";\r\n+\t\t\t\tadd.append("A "+thang+" of ");\r\n \t\t\tAbility A=(Ability)V.elementAt(v);\r\n \t\t\tif(V.size()==1)\r\n-\t\t\t\tadd+=A.name();\r\n+\t\t\t\tadd.append(A.name());\r\n \t\t\telse\r\n \t\t\tif(v==(V.size()-1))\r\n-\t\t\t\tadd+="and "+A.name();\r\n+\t\t\t\tadd.append("and "+A.name());\r\n \t\t\telse\r\n-\t\t\t\tadd+=A.name()+", ";\r\n+\t\t\t\tadd.append(A.name()+", ");\r\n \t\t}\r\n-\t\treturn add+((add.length()==0)?"":"\\n")+id;\r\n+\t\tif(add.length()>0)\r\n+\t\t{\r\n+\t\t\tadd.append(more+"\\n");\r\n+\t\t}\r\n+\t\tadd.append(id);\r\n+\t\treturn add.toString();\r\n \t}\r\n \tpublic void readIfAble(MOB mob, Scroll me, String spellName)\r\n \t{\r\ndiff --git a/com/planet_ink/coffee_mud/MOBS/Assassin.java b/com/planet_ink/coffee_mud/MOBS/Assassin.java\nindex efe82dc88e..0d9ef624ac 100644\n--- a/com/planet_ink/coffee_mud/MOBS/Assassin.java\n+++ b/com/planet_ink/coffee_mud/MOBS/Assassin.java\n@@ -1,5 +1,72 @@\n package com.planet_ink.coffee_mud.MOBS;\r\n \r\n-public class Assassin\r\n+import java.util.*;\r\n+import com.planet_ink.coffee_mud.utils.*;\r\n+import com.planet_ink.coffee_mud.interfaces.*;\r\n+import com.planet_ink.coffee_mud.common.*;\r\n+public class Assassin extends GenMob\r\n {\r\n+\tpublic Assassin()\r\n+\t{\r\n+\t\tsuper();\r\n+\t\tUsername="an assassin";\r\n+\t\tsetDescription("He`s all dressed in black, and has eyes as cold as ice.");\r\n+\t\tsetDisplayText("An assassin stands here.");\r\n+\t\tRace R=CMClass.getRace("Human");\r\n+\t\tif(R!=null)\r\n+\t\t{\r\n+\t\t\tbaseCharStats().setMyRace(R);\r\n+\t\t\tR.startRacing(this,false);\r\n+\t\t}\r\n+\t\tbaseCharStats().setStat(CharStats.DEXTERITY,18);\r\n+\t\tbaseCharStats().setStat(CharStats.GENDER,(int)\'M\');\r\n+\t\tbaseCharStats().setStat(CharStats.WISDOM,18);\r\n+\t\tbaseEnvStats().setSensesMask(baseEnvStats().disposition()|EnvStats.CAN_SEE_DARK);\r\n+\r\n+\t\tAbility A=CMClass.getAbility("Thief_Hide");\r\n+\t\tif(A!=null)\r\n+\t\t{\r\n+\t\t\tA.setProfficiency(100);\r\n+\t\t\taddAbility(A);\r\n+\t\t}\r\n+\t\tA=CMClass.getAbility("Thief_Sneak");\r\n+\t\tif(A!=null)\r\n+\t\t{\r\n+\t\t\tA.setProfficiency(100);\r\n+\t\t\taddAbility(A);\r\n+\t\t}\r\n+\t\tA=CMClass.getAbility("Thief_BackStab");\r\n+\t\tif(A!=null)\r\n+\t\t{\r\n+\t\t\tA.setProfficiency(100);\r\n+\t\t\taddAbility(A);\r\n+\t\t}\r\n+\t\tA=CMClass.getAbility("Thief_Assassinate");\r\n+\t\tif(A!=null)\r\n+\t\t{\r\n+\t\t\tA.setProfficiency(100);\r\n+\t\t\taddAbility(A);\r\n+\t\t}\r\n+\t\tItem I=CMClass.getWeapon("Longsword");\r\n+\t\tif(I!=null)\r\n+\t\t{\r\n+\t\t\taddInventory(I);\r\n+\t\t\tI.wearIfPossible(this);\r\n+\t\t}\r\n+\t\tI=CMClass.getArmor("LeatherArmor");\r\n+\t\tif(I!=null)\r\n+\t\t{\r\n+\t\t\taddInventory(I);\r\n+\t\t\tI.wearIfPossible(this);\r\n+\t\t}\r\n+\r\n+\t\trecoverMaxState();\r\n+\t\tresetToMaxState();\r\n+\t\trecoverEnvStats();\r\n+\t\trecoverCharStats();\r\n+\t}\r\n+\tpublic Environmental newInstance()\r\n+\t{\r\n+\t\treturn new Assassin();\r\n+\t}\r\n }\r\ndiff --git a/com/planet_ink/coffee_mud/MOBS/StdBanker.java b/com/planet_ink/coffee_mud/MOBS/StdBanker.java\nindex 4802940618..ec45df82fd 100644\n--- a/com/planet_ink/coffee_mud/MOBS/StdBanker.java\n+++ b/com/planet_ink/coffee_mud/MOBS/StdBanker.java\n@@ -115,6 +115,18 @@ public class StdBanker extends StdShopKeeper implements Banker\n \t\t}\r\n \t\treturn mine;\r\n \t};\r\n+\tpublic Vector getAccountNames()\r\n+\t{\r\n+\t\tVector V=ExternalPlay.DBReadJournal(bankChain());\r\n+\t\tVector mine=new Vector();\r\n+\t\tfor(int v=0;v<V.size();v++)\r\n+\t\t{\r\n+\t\t\tVector V2=(Vector)V.elementAt(v);\r\n+\t\t\tmine.addElement(V2.elementAt(1));\r\n+\t\t}\r\n+\t\treturn mine;\r\n+\t}\r\n+\r\n \tpublic Item findDepositInventory(String mob, String likeThis)\r\n \t{\r\n \t\tVector V=getDepositInventory(mob);\r\ndiff --git a/com/planet_ink/coffee_mud/MOBS/StdShopKeeper.java b/com/planet_ink/coffee_mud/MOBS/StdShopKeeper.java\nindex f763178f41..2482552324 100644\n--- a/com/planet_ink/coffee_mud/MOBS/StdShopKeeper.java\n+++ b/com/planet_ink/coffee_mud/MOBS/StdShopKeeper.java\n@@ -794,7 +794,8 @@ public class StdShopKeeper extends StdMOB implements ShopKeeper\n \t\t\tcase Affect.TYP_BUY:\r\n \t\t\tcase Affect.TYP_VIEW:\r\n \t\t\t{\r\n-\t\t\t\tif((affect.tool()!=null)&&(doIHaveThisInStock(affect.tool().name(),mob)))\r\n+\t\t\t\tif((affect.tool()!=null)\r\n+\t\t\t\t&&(doIHaveThisInStock(affect.tool().name(),mob)))\r\n \t\t\t\t{\r\n \t\t\t\t\tif((affect.targetMinor()!=Affect.TYP_VIEW)\r\n \t\t\t\t\t&&(yourValue(mob,affect.tool(),true)>totalMoney(mob)))\r\n@@ -869,6 +870,47 @@ public class StdShopKeeper extends StdMOB implements ShopKeeper\n \t}\r\n \r\n \r\n+\tpublic Vector removeSellableProduct(String named, MOB mob)\r\n+\t{\r\n+\t\tVector V=new Vector();\r\n+\t\tEnvironmental product=removeStock(named,mob);\r\n+\t\tif(product==null) return V;\r\n+\t\tV.addElement(product);\r\n+\t\tif(product instanceof Container)\r\n+\t\t{\r\n+\t\t\tint i=0;\r\n+\t\t\tKey foundKey=null;\r\n+\t\t\tContainer C=((Container)product);\r\n+\t\t\twhile(i<storeInventory.size())\r\n+\t\t\t{\r\n+\t\t\t\tint a=storeInventory.size();\r\n+\t\t\t\tEnvironmental I=(Environmental)storeInventory.elementAt(i);\r\n+\t\t\t\tif((I instanceof Item)&&(((Item)I).container()==product))\r\n+\t\t\t\t{\r\n+\t\t\t\t\tif((I instanceof Key)&&(((Key)I).getKey().equals(C.keyName())))\r\n+\t\t\t\t\t\tfoundKey=(Key)I;\r\n+\t\t\t\t\t((Item)I).remove();\r\n+\t\t\t\t\tV.addElement(I);\r\n+\t\t\t\t\tstoreInventory.removeElement(I);\r\n+\t\t\t\t\t((Item)I).setContainer((Item)product);\r\n+\t\t\t\t}\r\n+\t\t\t\tif(a==storeInventory.size())\r\n+\t\t\t\t\ti++;\r\n+\t\t\t}\r\n+\t\t\tif((C.isLocked())&&(foundKey==null))\r\n+\t\t\t{\r\n+\t\t\t\tString keyName=Double.toString(Math.random());\r\n+\t\t\t\tC.setKeyName(keyName);\r\n+\t\t\t\tC.setLidsNLocks(C.hasALid(),true,C.hasALock(),false);\r\n+\t\t\t\tKey key=(Key)CMClass.getItem("StdKey");\r\n+\t\t\t\tkey.setKey(keyName);\r\n+\t\t\t\tkey.setContainer(C);\r\n+\t\t\t\tV.addElement(key);\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\treturn V;\r\n+\t}\r\n+\t\r\n \tpublic void affect(Environmental myHost, Affect affect)\r\n \t{\r\n \t\tsuper.affect(myHost,affect);\r\n@@ -937,45 +979,20 @@ public class StdShopKeeper extends StdMOB implements ShopKeeper\n \t\t\t\t\tExternalPlay.quickSay(this,affect.source(),"Interested in "+affect.tool().name()+"? Here is some information for you:\\n\\rLevel "+affect.tool().envStats().level()+"\\n\\rDescription: "+affect.tool().description(),true,false);\r\n \t\t\t\tbreak;\r\n \t\t\tcase Affect.TYP_BUY:\r\n-\t\t\t\tif((affect.tool()!=null)&&(doIHaveThisInStock(affect.tool().name(),mob)))\r\n+\t\t\t\tif((affect.tool()!=null)\r\n+\t\t\t\t&&(doIHaveThisInStock(affect.tool().name(),mob)))\r\n \t\t\t\t{\r\n-\t\t\t\t\tEnvironmental product=removeStock(affect.tool().name(),mob);\r\n+\t\t\t\t\tVector products=removeSellableProduct(affect.tool().name(),mob);\r\n+\t\t\t\t\tif(products.size()==0) break;\r\n+\t\t\t\t\tEnvironmental product=(Environmental)products.firstElement();\r\n \t\t\t\t\tsetTotalMoney(mob,yourValue(mob,product,true));\r\n \t\t\t\t\tmob.recoverEnvStats();\r\n \t\t\t\t\tif(product instanceof Item)\r\n \t\t\t\t\t{\r\n-\t\t\t\t\t\tmob.location().addItemRefuse((Item)product,Item.REFUSE_PLAYER_DROP);\r\n-\t\t\t\t\t\tif(product instanceof Container)\r\n+\t\t\t\t\t\tfor(int p=0;p<products.size();p++)\r\n \t\t\t\t\t\t{\r\n-\t\t\t\t\t\t\tint i=0;\r\n-\t\t\t\t\t\t\tKey foundKey=null;\r\n-\t\t\t\t\t\t\tContainer C=((Container)product);\r\n-\t\t\t\t\t\t\twhile(i<storeInventory.size())\r\n-\t\t\t\t\t\t\t{\r\n-\t\t\t\t\t\t\t\tint a=storeInventory.size();\r\n-\t\t\t\t\t\t\t\tEnvironmental I=(Environmental)storeInventory.elementAt(i);\r\n-\t\t\t\t\t\t\t\tif((I instanceof Item)&&(((Item)I).container()==product))\r\n-\t\t\t\t\t\t\t\t{\r\n-\t\t\t\t\t\t\t\t\tif((I instanceof Key)&&(((Key)I).getKey().equals(C.keyName())))\r\n-\t\t\t\t\t\t\t\t\t\tfoundKey=(Key)I;\r\n-\t\t\t\t\t\t\t\t\t((Item)I).remove();\r\n-\t\t\t\t\t\t\t\t\tmob.location().addItemRefuse((Item)I,Item.REFUSE_PLAYER_DROP);\r\n-\t\t\t\t\t\t\t\t\tstoreInventory.removeElement(I);\r\n-\t\t\t\t\t\t\t\t\t((Item)I).setContainer((Item)product);\r\n-\t\t\t\t\t\t\t\t}\r\n-\t\t\t\t\t\t\t\tif(a==storeInventory.size())\r\n-\t\t\t\t\t\t\t\t\ti++;\r\n-\t\t\t\t\t\t\t}\r\n-\t\t\t\t\t\t\tif((C.isLocked())&&(foundKey==null))\r\n-\t\t\t\t\t\t\t{\r\n-\t\t\t\t\t\t\t\tString keyName=Double.toString(Math.random());\r\n-\t\t\t\t\t\t\t\tC.setKeyName(keyName);\r\n-\t\t\t\t\t\t\t\tC.setLidsNLocks(C.hasALid(),true,C.hasALock(),false);\r\n-\t\t\t\t\t\t\t\tKey key=(Key)CMClass.getItem("StdKey");\r\n-\t\t\t\t\t\t\t\tkey.setKey(keyName);\r\n-\t\t\t\t\t\t\t\tkey.setContainer(C);\r\n-\t\t\t\t\t\t\t\tmob.location().addItemRefuse(key,Item.REFUSE_PLAYER_DROP);\r\n-\t\t\t\t\t\t\t}\r\n+\t\t\t\t\t\t\tItem I=(Item)products.elementAt(p);\r\n+\t\t\t\t\t\t\tmob.location().addItemRefuse(I,Item.REFUSE_PLAYER_DROP);\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tFullMsg msg=new FullMsg(mob,product,this,Affect.MSG_GET,null);\r\n \t\t\t\t\t\tif(location().okAffect(mob,msg))\r\ndiff --git a/com/planet_ink/coffee_mud/interfaces/Banker.java b/com/planet_ink/coffee_mud/interfaces/Banker.java\nindex 0fb5d2896c..b3605e4815 100644\n--- a/com/planet_ink/coffee_mud/interfaces/Banker.java\n+++ b/com/planet_ink/coffee_mud/interfaces/Banker.java\n@@ -7,6 +7,7 @@ public interface Banker extends ShopKeeper\n \tpublic void delDepositInventory(String mob, Item thisThang);\r\n \tpublic void delAllDeposits(String mob);\r\n \tpublic int numberDeposited(String mob);\r\n+\tpublic Vector getAccountNames();\r\n \tpublic Vector getDepositInventory(String mob);\r\n \tpublic Item findDepositInventory(String mob, String likeThis);\r\n \tpublic void setCoinInterest(double interest);\r\ndiff --git a/com/planet_ink/coffee_mud/interfaces/ShopKeeper.java b/com/planet_ink/coffee_mud/interfaces/ShopKeeper.java\nindex e06c4362ad..3fe59376d2 100644\n--- a/com/planet_ink/coffee_mud/interfaces/ShopKeeper.java\n+++ b/com/planet_ink/coffee_mud/interfaces/ShopKeeper.java\n@@ -41,6 +41,7 @@ public interface ShopKeeper extends MOB\n \tpublic Vector getUniqueStoreInventory();\r\n \tpublic Vector getBaseInventory();\r\n \tpublic String storeKeeperString();\r\n+\tpublic Vector removeSellableProduct(String named, MOB mob);\r\n \tpublic void clearStoreInventory();\r\n \tpublic void addStoreInventory(Environmental thisThang, int number);\r\n \tpublic void delStoreInventory(Environmental thisThang);\r\ndiff --git a/com/planet_ink/coffee_mud/system/TelnetSession.java b/com/planet_ink/coffee_mud/system/TelnetSession.java\nindex 7ea6c273ae..525f2faae9 100644\n--- a/com/planet_ink/coffee_mud/system/TelnetSession.java\n+++ b/com/planet_ink/coffee_mud/system/TelnetSession.java\n@@ -1190,26 +1190,29 @@ public class TelnetSession extends Thread implements Session\n \t\t\t\tcase \'M\': { buf.append("^m"+mob().maxState().getMana()); c++; break;}\r\n \t\t\t\tcase \'v\': { buf.append("^v"+mob().curState().getMovement()); c++; break;}\r\n \t\t\t\tcase \'V\': { buf.append("^v"+mob().maxState().getMovement()); c++; break;}\r\n-\t\t\t\tcase \'x\': { buf.append("^h"+mob().getExperience()); c++; break;}\r\n-\t\t\t\tcase \'X\': { buf.append("^h"+mob().getExpNeededLevel()); c++; break;}\r\n-\t\t\t\tcase \'g\': { buf.append("^h"+mob().getMoney()); c++; break;}\r\n-\t\t\t\tcase \'a\': { buf.append("^h"+mob().getAlignment()); c++; break;}\r\n-\t\t\t\tcase \'A\': { buf.append("^h"+CommonStrings.alignmentStr(mob().getAlignment())); c++; break;}\r\n-\t\t\t\tcase \'w\': { buf.append("^h"+mob().envStats().weight()); c++; break;}\r\n-\t\t\t\tcase \'W\': { buf.append("^h"+mob().maxCarry()); c++; break;}\r\n+\t\t\t\tcase \'x\': { buf.append(mob().getExperience()); c++; break;}\r\n+\t\t\t\tcase \'X\': { buf.append(mob().getExpNeededLevel()); c++; break;}\r\n+\t\t\t\tcase \'g\': { buf.append(mob().getMoney()); c++; break;}\r\n+\t\t\t\tcase \'a\': { buf.append(mob().getAlignment()); c++; break;}\r\n+\t\t\t\tcase \'A\': { buf.append(CommonStrings.alignmentStr(mob().getAlignment())); c++; break;}\r\n+\t\t\t\tcase \'w\': { buf.append(mob().envStats().weight()); c++; break;}\r\n+\t\t\t\tcase \'W\': { buf.append(mob().maxCarry()); c++; break;}\r\n \t\t\t\tcase \'r\': {   if(mob().location()!=null)\r\n-\t\t\t\t\t\t\t\t  buf.append("^h"+mob().location().displayText());\r\n+\t\t\t\t\t\t\t\t  buf.append(mob().location().displayText());\r\n+\t\t\t\t\t\t\t  c++; break; }\r\n+\t\t\t\tcase \'z\': {      if((mob().location()!=null)&&(mob().isASysOp(mob().location())))\r\n+\t\t\t\t\t\t\t\t  buf.append(mob().location().getArea().name());\r\n \t\t\t\t\t\t\t  c++; break; }\r\n \t\t\t\tcase \'R\': {   if((mob().location()!=null)&&(mob().isASysOp(mob().location())))\r\n-\t\t\t\t\t\t\t\t  buf.append("^h"+mob().location().ID());\r\n+\t\t\t\t\t\t\t\t  buf.append(mob().location().ID());\r\n \t\t\t\t\t\t\t  c++; break; }\r\n \t\t\t\tcase \'e\': {\t  MOB victim=mob().getVictim();\r\n \t\t\t\t\t\t\t  if((mob().isInCombat())&&(victim!=null))\r\n-\t\t\t\t\t\t\t\t  buf.append("^h"+victim.name());\r\n+\t\t\t\t\t\t\t\t  buf.append(victim.name());\r\n \t\t\t\t\t\t\t  c++; break; }\r\n \t\t\t\tcase \'E\': {\t  MOB victim=mob().getVictim();\r\n \t\t\t\t\t\t\t  if((mob().isInCombat())&&(victim!=null))\r\n-\t\t\t\t\t\t\t\t  buf.append("^h"+victim.charStats().getMyRace().healthText(victim));\r\n+\t\t\t\t\t\t\t\t  buf.append(victim.charStats().getMyRace().healthText(victim));\r\n \t\t\t\t\t\t\t  c++; break; }\r\n \t\t\t\tcase \'B\': { buf.append("\\n\\r"); c++; break;}\r\n \t\t\t\tcase \'d\': {\t  MOB victim=mob().getVictim();\r\ndiff --git a/guides/bugs.txt b/guides/bugs.txt\nindex d8d8147c99..5bdc610be3 100644\n--- a/guides/bugs.txt\n+++ b/guides/bugs.txt\n@@ -10,4 +10,6 @@ I can\'t open a backpack in combat? Why not?\n on illusory wall, SENSE INVISIBLE won\'t let you see the exit.\r\n buying a pet, if you can\'t have another follower, don\'t allow the purchase\r\n if a pet is sleeping and you recall, you lose the pet\r\n-Reimplement SysOpModLocale\n\\ No newline at end of file\n+Reimplement SysOpModLocale\r\n+mailto:marqphex@iname.com?subject=Glitch/Broken Code\r\n+I had to crawl south and then climb up somewhere...  When I said slimb, it took the 50 mana, but told me I had to stand.  Seems kinda.. cheapskate.\n\\ No newline at end of file\ndiff --git a/resources/help/arc_help.ini b/resources/help/arc_help.ini\nindex a5b4eb6eda..0523d61bc1 100644\n--- a/resources/help/arc_help.ini\n+++ b/resources/help/arc_help.ini\n@@ -1671,8 +1671,9 @@ room of the behavior, and in any adjacent rooms.\n BEHAVIOR_FIGHTERNESS=\\\r\n Behavior   : Fighterness\\n\\r\\\r\n Targets    : MOBs\\n\\r\\\r\n-Parameters : \\n\\r\\\r\n-Example    : \\n\\r\\\r\n+Parameters : Empty, or a subclass name\\n\\r\\\r\n+Example    : Fighter\\n\\r\\\r\n+Example    : Paladin\\n\\r\\\r\n Description: \\n\\r\\\r\n An extension of CombatAbilities, this behavior makes the mob a Fighter by class, \\\r\n and gives the mob fighter skills appropriate to its level.  After \\\r\n@@ -1682,8 +1683,8 @@ level changes to the mob to take over.\n BEHAVIOR_DRUIDNESS=\\\r\n Behavior   : Druidness\\n\\r\\\r\n Targets    : MOBs\\n\\r\\\r\n-Parameters : \\n\\r\\\r\n-Example    : \\n\\r\\\r\n+Parameters : Empty, or a subclass name\\n\\r\\\r\n+Example    : Druid\\n\\r\\\r\n Description: \\n\\r\\\r\n An extension of CombatAbilities, this behavior makes the mob a Druid by class, \\\r\n and gives the mob druid skills appropriate to its level.  After \\\r\n@@ -1693,8 +1694,8 @@ level changes to the mob to take over.\n BEHAVIOR_BARDNESS=\\\r\n Behavior   : Bardness\\n\\r\\\r\n Targets    : MOBs\\n\\r\\\r\n-Parameters : \\n\\r\\\r\n-Example    : \\n\\r\\\r\n+Parameters : Empty, or a subclass name\\n\\r\\\r\n+Example    : Bard\\n\\r\\\r\n Description: \\n\\r\\\r\n An extension of CombatAbilities, this behavior makes the mob a Bard by class, \\\r\n and gives the mob bard songs appropriate to its level.  After \\\r\n@@ -1881,8 +1882,9 @@ For a price, this mob will identify items.  They will NOT work for Archons, howe\n BEHAVIOR_MAGENESS=\\\r\n Behavior   : Mageness\\n\\r\\\r\n Targets    : MOBs\\n\\r\\\r\n-Parameters : \\n\\r\\\r\n-Example    : \\n\\r\\\r\n+Parameters : Empty, or a subclass name\\n\\r\\\r\n+Example    : Mage\\n\\r\\\r\n+Example    : Illusionist\\n\\r\\\r\n Description: \\n\\r\\\r\n An extension of CombatAbilities, this behavior makes the mob a Mage by class, \\\r\n and gives the mob mage spells appropriate to its level.  After \\\r\n@@ -2441,8 +2443,9 @@ check their often when starting up a new quest!. \\n\\r\\\n BEHAVIOR_THIEFNESS=\\\r\n Behavior   : Thiefness\\n\\r\\\r\n Targets    : MOBs\\n\\r\\\r\n-Parameters : \\n\\r\\\r\n-Example    : \\n\\r\\\r\n+Parameters : Empty, or a subclass name\\n\\r\\\r\n+Example    : Thief\\n\\r\\\r\n+Example    : Assassin\\n\\r\\\r\n Description: \\n\\r\\\r\n An extension of CombatAbilities, this behavior makes the mob a Thief by class, \\\r\n and gives the mob thief skills appropriate to its level.  After \\\r\ndiff --git a/resources/help/skill_help.ini b/resources/help/skill_help.ini\nindex 2f5544c9b8..75cecbb638 100644\n--- a/resources/help/skill_help.ini\n+++ b/resources/help/skill_help.ini\n@@ -167,6 +167,13 @@ or down a surface in order to get there safely.  Without \\\n using this skill, someone attempting the climb such a \\\r\n surface is certain to fall.  \r\n \r\n+CON=<ABILITY>\\\r\n+Usage    : CON [OPPONENT NAME] [COMMAND]\\n\\r\\\r\n+Example  : con orc sleep\\n\\r\\\r\n+The thief will attempt to use trickery, and flattery to get a mob to do \\\r\n+something for him or her.  That something may be any \\\r\n+command except "follow".\r\n+\r\n CONTROL=CONTROL_UNDEAD\r\n CONTROL_UNDEAD=<ABILITY>\\\r\n Usage    : CONTROL [OPPONENT NAME] \\n\\r\\\r\n@@ -188,6 +195,17 @@ REBUKE their current deity.  A deity may be also be specified \\\n as a parameter, allowing the cleric to convert themselves to the \\\r\n worship of a deity.  Use the DEITIES command for more information.\r\n \r\n+CONTRACTHIT=CONTRACT_HIT\r\n+CONTRACT_HIT=<ABILITY>\\\r\n+Usage    : CONTRACTHIT [MOB NAME]\\n\\r\\\r\n+Example  : contracthit mob\\n\\r\\\r\n+By spending an appropriate amount of money, the player can put \\\r\n+a \'hit\' out on the target mob.  The target will, after some time, \\\r\n+be assaulted by 3-6 assassins of appropriate level.  The \\\r\n+assassins will persist until their job is done, or are all \\\r\n+killed.  They will track the target if necessary.\r\n+\r\n+\r\n COPY=SCROLL_COPY\r\n SCROLL_COPY=<ABILITY>\\\r\n Usage    : COPY [SPELL NAME] [SCROLL SOURCE NAME]\\n\\r\\\r\n@@ -297,6 +315,14 @@ For players wielding two weapons, this skill allows the fighter to have \\\n an extra parry attempt using the off-hand weapon during combat.  A \\\r\n successful parry effectively cancels the attack.\r\n \r\n+EMBEZZLE=<ABILITY>\\\r\n+Usage    : EMBEZZLE [BANKER NAME]\\n\\r\\\r\n+Example  : embezzle bob\\n\\r\\\r\n+The thief attempts to embezzle at least 2% of the value of a random \\\r\n+bank account into his own account with the same bank.  If successful, \\\r\n+the banker will notice that something has happened, and will watch \\\r\n+their books closely for the coming day.\r\n+\r\n ENDURANCE=<ABILITY>\\\r\n Example  : \\n\\r\\\r\n Allows the fighter to recover hit points, mana, and movement \\\r\n@@ -325,6 +351,16 @@ he or she is at present, to the location of a water source \\\n the Ranger will become aware of which direction seems \\\r\n best.\r\n \r\n+FORGERY=<ABILITY>\\\r\n+Usage    : FORGERY [ROOM ID]/[SPELL NAME]/[NOTE NAME] [ITEM NAME]\\n\\r\\\r\n+Example  : forge Midgaard#3001 parchment\\n\\r\\\r\n+Example  : forge "wish" scrollpaper\\n\\r\\\r\n+Example  : forge "an Archon\'s Note" parchment\\n\\r\\\r\n+The thief gains the ability to forge title\'s to land, spells onto \\\r\n+scrolls (or at least in seeming), or payment notes.  While \\\r\n+shopkeepers will not be fooled by these documents, other \\\r\n+players may well be.\r\n+\r\n FLANK=THIEF_FLANK\r\n THIEF_FLANK=<ABILITY>\\\r\n Usage    : FLANK\\n\\r\\\r\n@@ -388,6 +424,11 @@ This skill allows the player to sniff and taste a potentially \\\n poisoned item (like a drink, or a sword) and tell what kind of \\\r\n poison (if any) is on the item.\r\n \r\n+IMPROVED_HIDING=THIEF_IMPROVEDHIDING\r\n+THIEF_IMPROVEDHIDING=<ABILITY>\\\r\n+Example  : \\n\\r\\\r\n+The thief has become so adept at remaining hidden that he or she \\\r\n+is able to speak and make other noises while remaining hidden.\r\n \r\n INVISIBILITY_TO_MARK=THIEF_MARKINVISIBILITY\r\n THIEF_MARKINVISIBILITY=<ABILITY>\\\r\n@@ -564,6 +605,14 @@ energy at a target, while others only apply to the \\\n thief.  For help on a particular prayer, enter help \\\r\n and then the name of the prayer.\r\n \r\n+PLANTITEM=PLANT_ITEM\r\n+PLANT_ITEM=<ABILITY>\\\r\n+Usage    : PLANTITEM [ITEM NAME] [MOB NAME]\r\n+Example  : plantitem bomb orc\\n\\r\\\r\n+Plant item is the ability to slip an item to another creature \\\r\n+unaware.  If successful, the item will be hidden in the targets \\\r\n+inventory.\r\n+\r\n RAPIDSHOT=RAPID_SHOT\r\n RAPID_SHOT=<ABILITY>\\\r\n Example  : \\n\\r\\\r\n@@ -599,6 +648,28 @@ can revoke their magical abilities using the revoke \\\n command.  Only one spell or prayer is revoked using \\\r\n this skill, usually the most recent spell.\r\n \r\n+RACKETEER=<ABILITY>\\\r\n+Usage    : RACKETEER [BANKER NAME]\\n\\r\\\r\n+Example  : racketeer bob\\n\\r\\\r\n+The thief, though intimidation and bluffing, attempts to convince \\\r\n+a shopkeeper to pay him or her "protection" money.  The banker will \\\r\n+then be safe from more payments for the coming day from any thief.\r\n+\r\n+ROBBERY=<ABILITY>\\\r\n+Usage    : ROBBERY [ITEM NAME] [SHOPKEEPER]\\n\\r\\\r\n+Example  : robbery bob\\n\\r\\\r\n+The thief may use this skill to steal items from the inventory \\\r\n+of shopkeepers.  Regardless of whether the thief is actually \\\r\n+caught, the shopkeeper will be much less willing to deal with \\\r\n+the thief for a period after the robbery.\r\n+\r\n+SAFECRACKING=<ABILITY>\\\r\n+Example  : \\n\\r\\\r\n+This skill allows a thief the ability to pick the locks on doors \\\r\n+which are normally reserved for a thief of a much higher level.  \\\r\n+It also allows the thief to mundanely circumvent a Wizard Lock \\\r\n+under certain circumstances.\r\n+\r\n SAP=<ABILITY>\\\r\n Usage    : SAP [OPPONENT NAME] \\n\\r\\\r\n Example  : sap orc\\n\\r\\\r\n@@ -665,6 +736,12 @@ Example  : \\n\\r\\\n Allows the affected mob to deliver a second attack during \\\r\n their round.\r\n \r\n+SENSE_LAW=<ABILITY>\\\r\n+Example  : \\n\\r\\\r\n+The thief gains an uncanny ability to sense law enforcement \\\r\n+officials in the same room or any adjacent room, even if they \\\r\n+are invisible or unseen.  \r\n+\r\n SHADOW=<ABILITY>\\\r\n Usage    : shadow [OPPONENT NAME] \\n\\r\\\r\n Example  : shadow orc\\n\\r\\\r\n@@ -767,6 +844,23 @@ Example  : steal paper orc\\n\\r\\\n The thief will attempt to pilfer some item from the \\\r\n inventory of the target mob.\r\n \r\n+SLIP_ITEM=<ABILITY>\\\r\n+Usage    : "SLIPITEM" [ITEM NAME] [OPPONENT NAME]\\n\\r\\\r\n+Example  : slipitem hat orc\\n\\r\\\r\n+The thief will attempt to remove some item the target \\\r\n+is wearing.  If successful, the item will appear in the \\\r\n+target\'s inventory.  This skill is very sly, and may not \\\r\n+be used in combat, lest the target notice what the thief \\\r\n+is doing.\r\n+\r\n+STRIP_ITEM=<ABILITY>\\\r\n+Usage    : "STRIPITEM" [ITEM NAME] [OPPONENT NAME]\\n\\r\\\r\n+Example  : stripitem hat orc\\n\\r\\\r\n+The thief will attempt to remove some item the target \\\r\n+is wearing.  If successful, the item will appear in the \\\r\n+target\'s inventory.  This skill is blatant, and may be \\\r\n+used during combat.\r\n+\r\n SURRENDER=<ABILITY>\\\r\n Usage    : SURRENDER\\n\\r\\\r\n Example  : surrender\\n\\r\\\r\n', 'commit_subject': '', 'repo_name': 'bozimmerman/CoffeeMud', 'committer': {'name': 'bozimmerman', 'email': 'dc45fe023482b3b890b5e574e53c1d051f45b1ef@zimmers.net', 'time_sec': '1052160526', 'tz_offset': '0', 'date': {'seconds': '1052160526'}}, 'commit_tree': '0a24bc440f06e2e8a273463216cb733458d3d336', 'commit_message': '\n\ngit-svn-id: svn://192.168.1.10/public/CoffeeMud@2174 0d6f1817-ed0e-0410-87c9-987e46238f29\n', 'language_name': 'HTML', 'license': 'apache-2.0', 'hunks': '@@ -1671,8 +1671,9 @@ room of the behavior, and in any adjacent rooms.\n BEHAVIOR_FIGHTERNESS=\\\r\n Behavior   : Fighterness\\n\\r\\\r\n Targets    : MOBs\\n\\r\\\r\n-Parameters : \\n\\r\\\r\n-Example    : \\n\\r\\\r\n+Parameters : Empty, or a subclass name\\n\\r\\\r\n+Example    : Fighter\\n\\r\\\r\n+Example    : Paladin\\n\\r\\\r\n Description: \\n\\r\\\r\n An extension of CombatAbilities, this behavior makes the mob a Fighter by class, \\\r\n and gives the mob fighter skills appropriate to its level.  After \\\r\n@@ -1682,8 +1683,8 @@ level changes to the mob to take over.\n BEHAVIOR_DRUIDNESS=\\\r\n Behavior   : Druidness\\n\\r\\\r\n Targets    : MOBs\\n\\r\\\r\n-Parameters : \\n\\r\\\r\n-Example    : \\n\\r\\\r\n+Parameters : Empty, or a subclass name\\n\\r\\\r\n+Example    : Druid\\n\\r\\\r\n Description: \\n\\r\\\r\n An extension of CombatAbilities, this behavior makes the mob a Druid by class, \\\r\n and gives the mob druid skills appropriate to its level.  After \\\r\n@@ -1693,8 +1694,8 @@ level changes to the mob to take over.\n BEHAVIOR_BARDNESS=\\\r\n Behavior   : Bardness\\n\\r\\\r\n Targets    : MOBs\\n\\r\\\r\n-Parameters : \\n\\r\\\r\n-Example    : \\n\\r\\\r\n+Parameters : Empty, or a subclass name\\n\\r\\\r\n+Example    : Bard\\n\\r\\\r\n Description: \\n\\r\\\r\n An extension of CombatAbilities, this behavior makes the mob a Bard by class, \\\r\n and gives the mob bard songs appropriate to its level.  After \\\r\n@@ -1881,8 +1882,9 @@ For a price, this mob will identify items.  They will NOT work for Archons, howe\n BEHAVIOR_MAGENESS=\\\r\n Behavior   : Mageness\\n\\r\\\r\n Targets    : MOBs\\n\\r\\\r\n-Parameters : \\n\\r\\\r\n-Example    : \\n\\r\\\r\n+Parameters : Empty, or a subclass name\\n\\r\\\r\n+Example    : Mage\\n\\r\\\r\n+Example    : Illusionist\\n\\r\\\r\n Description: \\n\\r\\\r\n An extension of CombatAbilities, this behavior makes the mob a Mage by class, \\\r\n and gives the mob mage spells appropriate to its level.  After \\\r\n@@ -2441,8 +2443,9 @@ check their often when starting up a new quest!. \\n\\r\\\n BEHAVIOR_THIEFNESS=\\\r\n Behavior   : Thiefness\\n\\r\\\r\n Targets    : MOBs\\n\\r\\\r\n-Parameters : \\n\\r\\\r\n-Example    : \\n\\r\\\r\n+Parameters : Empty, or a subclass name\\n\\r\\\r\n+Example    : Thief\\n\\r\\\r\n+Example    : Assassin\\n\\r\\\r\n Description: \\n\\r\\\r\n An extension of CombatAbilities, this behavior makes the mob a Thief by class, \\\r\n and gives the mob thief skills appropriate to its level.  After \\\r\n', 'addition_count': 13, 'deletion_count': 10, 'src_file': 'a/resources/help/arc_help.ini', 'tgt_file': 'b/resources/help/arc_help.ini', 'file_extension': '.ini', 'before_file': 'ACCOUNT=\\\nCommand : ACCOUNT\\n\\r\\\nUsage   : ACCOUNT [ACCOUNT/PLAYER NAME]\\n\\r\\\nExample : account bob\\n\\r\\\nShort(s): \\n\\r\\\nIf this mud supports accounts, this command will show the account name, \\\na list of characters, and the account expiration date, if applicable.\n\nARCHELP=AHELP\nAHELP=\\\nCommand : AHELP\\n\\r\\\nUsage   : AHELP [TOPICNAME]\\n\\r\\\nExample : ahelp ahelp\\n\\r\\\nShort(s): \\n\\r\\\nA command to view the Administrative help commands.\n\nAFFECT=\\\nCommand : AFFECT\\n\\r\\\nUsage   : AFFECT ([TARGET])\\n\\r\\\nExample : affect\\n\\r\\\nExample : affect room\\n\\r\\\nExample : affect area\\n\\r\\\nExample : affect orc\\n\\r\\\nShort(s): AFF\\n\\r\\\nList the spell or other affects that your character is currently \\\nunder the influence of.  If targeted, it will show what the given \\\ntarget is affected by.\n    \nAREAS=See the normal HELP AREAS for usage information. \\\nThe Archon version of this command will color the area names based \\\non whether the area is active or passive, frozen or stopped.  Also, \\\narea names will be in parenthesis if they are currently Hidden from \\\nnormal users.\n\nTICKTOCK=\\\nCommand : TickTock\\n\\r\\\nUsage   : [NUM HOURS]/CLANTICK/[THREAD NAME]\\n\\r\\\nExample : ticktock 10\\n\\r\\\nExample : ticktock -4\\n\\r\\\nExample : ticktock CLANTICK\\n\\r\\\nExample : ticktock THPLAYERS0\\n\\r\\\nAdvance the time by specified number of hours, or cause one of the \\\nspecified maintenance threads to immediately go through a cycle.  \\\nUse LIST REPORTS to get a list of maintenance threads.  The CLANTICK \\\nargument forces the timed clan maintenance.\n\nARCTOPICS=ATOPICS\nATOPICS=\\\nCommand : ATOPICS\\n\\r\\\nUsage   : ATOPICS [TOPICNAME]\\n\\r\\\nExample : atopics\\n\\r\\\nShort(s): \\n\\r\\\nA command to view the Administrative help topics.\\n\\r\\\n\nANNOUNCE=\\\nCommand : ANNOUNCE\\n\\r\\\nUsage   : ANNOUNCE message\\n\\r\\\nUsage   : ANNOUNCETO [ALL/HERE/PLAYER NAME] message\\n\\r\\\nUsage   : ANNOUNCEMSG new personalized announce message prefix\\n\\r\\\nExample : announce A new area is discovered!\\n\\r\\\nExample : announceto all A new area is discovered!\\n\\r\\\nExample : announceto bob Hi Bob!\\n\\r\\\nExample : announcemsg A squeeky voice screeches \\n\\r\\\nShort(s): \\n\\r\\\nA command to make annoucements to players -- even those \\\nwho don\'t want to be announced to.  This command can be \\\nused to announce to all players or selected players using \\\nthe announceto syntax.  This is also the command used \\\nto personalize your announce prefix message by using the \\\nannouncemsg syntax.\n\nAS=\\\nCommand : AS\\n\\r\\\nUsage   : AS [PLAYERNAME/MOBNAME]/(PORT X)/PLAYERS (HERE) [COMMAND]\\n\\r\\\nExample : as "bob" inventory\\n\\r\\\nExample : as bob here drop all\\n\\r\\\nExample : as PLAYERS here drop all\\n\\r\\\nExample : as bob cast fireball monster\\n\\r\\\nExample : as port 2325 list users\\n\\r\\\nShort(s): \\n\\r\\\nA command that allows one to issue other commands as if they \\\nwere another player or mob.  This is the best way to manage \\\na players inventory or bank accounts from the command line. \\\nThe optional "here" parameter should follow the name if the \\\ncommand is to be issued with the player in the same room as the \\\narchon. The optional "port x" parameter can be used to execute \\\ncommands on other mud hosts, so long as the admin qualifies as a SysOp \\\non the target port.\\n\\r\\\n\\n\\r\\\n\n\nASYNC=\\\nCommand : ASYNC\\n\\r\\\nUsage   : ASYNC [COMMAND]\\n\\r\\\nExample : async where mob the\\n\\r\\\nShort(s): \\n\\r\\\nA command that allows one to issue other commands on their own \\\nseparate thread, so that you can continue to issue other commands \\\nwhile the other one is ongoing and giving you its output.  Be careful \\\nnot to lock up all of your muds threads this way!\n\nAT=\\\nCommand : AT\\n\\r\\\nUsage   : AT [ROOM ID/DESC/MOB/AREA]/PLAYERS [COMMAND]\\n\\r\\\nExample : at "the greasy pub" smile\\n\\r\\\nExample : at Midgaard#3001 bow\\n\\r\\\nExample : at bob cast fireball bob\\n\\r\\\nExample : at players say hello all!\\n\\r\\\nShort(s): \\n\\r\\\nA command that allows one to issue other commands elsewhere in the \\\nmud.\n\nBAN=\\\nCommand : BAN\\n\\r\\\nUsage   : BAN [PLAYER TYPE/IP ADDRESS]\\n\\r\\\nExample : ban bob\\n\\r\\\nExample : ban io.com\\n\\r\\\nExample : ban isp3.io.com\\n\\r\\\nExample : ban 123.32.23.1\\n\\r\\\nExample : ban 123.32.23.*\\n\\r\\\nExample : ban *the great\\n\\r\\\nExample : ban *penis*\\n\\r\\\nShort(s): \\n\\r\\\nA command to ban the given player or ip address from the \\\nsystem.  See also LIST, DESTROY\n\t\nBOOT=\\\nCommand : BOOT\\n\\r\\\nUsage   : BOOT [PLAYER NAME/IP ADDRESS]\\n\\r\\\nExample : boot bob\\n\\r\\\nExample : boot 192.168.0.1\\n\\r\\\nShort(s): \\n\\r\\\nA command to boot off a player.\n\t\nBEACON=\\\nCommand : BEACON\\n\\r\\\nUsage   : BEACON ([PLAYER TYPE]/[SHIP NAME])\\n\\r\\\nExample : beacon\\n\\r\\\nExample : beacon bob\\n\\r\\\nShort(s): \\n\\r\\\nA command to change the start room of a player, or the home port \\\nof a given ship.  If no player or ship \\\nis named, this command will change your own start room to the room \\\nyou occupy.  If a player is named, this command changes the players \\\nstart room to the room the player currently occupies.  If a ship is named, \\\nthen the current ships location will become their home port.\n\t\nBUG=\\\nCommand : BUG\\n\\r\\\nUsage   : BUG [MESSAGE]/REVIEW (FILTER) (STARTING MSG)\\n\\r\\\nUsage   : BUG TRANSFER (FILTER) [MESSAGE NUMBER] [TARGET]\\n\\r\\\nExample : bug nothing is spelled right in this room!\\n\\r\\\nExample : bug review\\n\\r\\\nExample : bug review 7\\n\\r\\\nExample : bug review bob 7\\n\\r\\\nShort(s): \\n\\r\\\nThis command can be used to submit bugs to the system.  When \\\nthe REVIEW parameter is given, the bugs will be iterated through \\\none at a time to give the archon a chance to delete, comment on, \\\nor email each one.  An optional starting number can be given to REVIEW. \\\nAn optional filter can be given to list only messages assigned to a particular user.\n\nCATALOG=\\\nCommand  : CATALOG\\n\\r\\\nUsage    : CATALOG LIST (MOBS/ITEMS/CATEGORIES/) [NAME MASK]\\n\\r\\\nUsage    : CATALOG (DELETE) [ITEM/MOB NAME]\\n\\r\\\nUsage    : CATALOG (ROOM/AREA/WORLD) (MOBS/ITEMS/)\\n\\r\\\nUsage    : CATALOG EDIT [ITEM NAME]\\n\\r\\\nUsage    : CATALOG CATEGORY [CATEGORY NAME]\\n\\r\\\nUsage    : CATALOG SCAN/DBSCAN (ROOM/AREA/WORLD) (MOBS/ITEMS/)\\n\\r\\\nUsage    : CATALOG OVERLOOK/DBOVERLOOK (ROOM/AREA/WORLD) (MOBS/ITEMS/)\\n\\r\\\nExample  : catalog list\\n\\r\\\nExample  : catalog list mobs the st\\n\\r\\\nExample  : catalog list mob categories\\n\\r\\\nExample  : catalog the waiter\\n\\r\\\nExample  : catalog delete the waiter\\n\\r\\\nExample  : catalog edit the sword\\n\\r\\\nExample  : catalog room mobs\\n\\r\\\nExample  : catalog scan area\\n\\r\\\nExample  : catalog dboverlook area mobs\\n\\r\\\nShort(s) : \\n\\r\\\nThis command is used to manage your muds global catalog of generic mobs and/or items. \\\nThe catalog is a place where you can store templates of mobs and items for reuse, \\\nor for quick global modification and analysis.  Mobs and items in your catalog \\\ncan be changed globally simply by creating and then changing any instance of one \\\nof them.  You can create \\\nnew instances of a cataloged object simply by entering CREATE <cataloged object name>. \\\nYour catalog is keyed by name, so once the name of a cataloged item or mob is set, it \\\nshould not be changed. \\\n\\n\\r\\n\\r\\\nCataloged items can be placed into categories by issueing the catalog category command \\\nbefore adding or modifying catalog entries.  Mobs and items so cataloged must still \\\nhave a unique global name, but flagging them this way can make listing them must easier. \\\n\\n\\r\\n\\r\\\nYou may review the objects in your catalog using the catalog list command. You can also \\\ncheck the catalog synchronicity of the objects in your live rooms with scan, or your \\\nsaved rooms with dbscan.  You can check for uncataloged objects in live rooms with the \\\noverlook parameter, or in your saved rooms with dboverlook. \\\n\\n\\r\\n\\r\\\nYou may delete an object from your catalog to stop using it as a global template. \\\nDeleting an object from the catalog only detaches instances of a cataloged object from \\\nall others, but does not destroy any actual instances.\\\n\\n\\r\\n\\r\\\nThe catalog is also used to manage a global random item-drop table.  Items can be set to \\\nrandomly appear in the inventories of selected mobs when those mobs are brought to life, or \\\nat the moment of their death. Use CATALOG EDIT <item name> to change drop settings.\n\nCLOAK=\\\nCommand  : CLOAK\\n\\r\\\nUsage    : CLOAK (OFF)\\n\\r\\\nExample  : cloak\\n\\r\\\nExample  : cloak off\\n\\r\\\nShort(s) : \\n\\r\\\nCloak makes the player unable to be seen in the WHO list.  They can \\\nstill be seen by players in the same room, however.\n\nCOPY=\\\nCommand : COPY\\n\\r\\\nUsage   : COPY ([NUMBER]) [ITEM TYPE]/[DIRECTION] \\n\\r\\\nExample : copy joe\\n\\r\\\nExample : copy beast sword\\n\\r\\\nExample : copy Longsword@room\\n\\r\\\nExample : copy Longsword@an orc\\n\\r\\\nExample : copy east\\n\\r\\\nShort(s): \\n\\r\\\nA command for the creation of items, mobs, and rooms. \\\nEnter COPY for more information on command usage.\n\nCREATE=\\\nCommand : CREATE\\n\\r\\\nUsage   : CREATE [ITEM TYPE] ... \\n\\r\\\nExample : create room e StdRoom\\n\\r\\\nExample : create item Longsword\\n\\r\\\nExample : create item Longsword@room\\n\\r\\\nExample : create item Longsword@an orc\\n\\r\\\nExample : create StdExit east\\n\\r\\\nExample : create news\\n\\r\\\nShort(s): \\n\\r\\\nA command for the creation of an exit, item, quest, faction, component, government, holiday, \\\nclan, mob, race, mixedrace, ability, language, craftskill, help/ahelp, achievement, manufacturer, \\\nallqualify, class, poll, debugflag, webserver, disableflag, enableflag, news, user, trap, \\\nwrightskill, gatherskill, or room. \\\nEnter CREATE or CREATE X for more information on command usage. \\\nUse AHELP QUESTS for more information on creating quests.  \n\nDESTROY=\\\nCommand : DESTROY\\n\\r\\\nUsage   : DESTROY [ITEM TYPE] ... \\n\\r\\\nExample : destroy room e\\n\\r\\\nExample : destroy orc\\n\\r\\\nExample : destroy item longsword\\n\\r\\\nExample : destroy item longsword@an orc\\n\\r\\\nShort(s): \\n\\r\\\nA command for the destruction of items, quests, components, planes, mobs, rooms, exits, polls, classes, races, \\\nand listed bugs, typos, ideas, and ban. \\\nEnter DESTROY for more information on command usage.\n\t\nDEVIATIONS=\\\nCommand : DEVIATIONS\\n\\r\\\nUsage   : DEVIATIONS [MOBS/ITEMS/BOTH] [MASK]/ROOM/AREA \\n\\r\\\nExample : deviations mobs area\\n\\r\\\nShort(s): \\n\\r\\\nA command for showing items in a room or area, and how they \\\ndeviate from established norms for their type and level.  This is done \\\nby comparing the base stats.  Magical ability is applied only to the level \\\nof the item.\n\t\nEVERY=\\\nCommand : EVERY\\n\\r\\\nUsage   : EVERY [ROOM/ITEM/MOB/EXIT] (INAREA/INWORLD) (+PLAYERS) (<MASK>[ZAPPERMASK]</MASK>) [COMMAND]\\n\\r\\\nExample : every room inarea look\\n\\r\\\nExample : every mob cast tourettes *\\n\\r\\\nShort(s): \\n\\r\\\nThis command allows you to execute a command against every room, item, mob, or exit in the same room \\\nas the Archon.  The name of the target can be substituted in your command with an asterisk *.  The \\\nINAREA or INWORLD flag may be given to expand the rooms affected.  The +PLAYERS flag will include players \\\nwhen the MOB argument is given.  A ZapperMask may be placed between <MASK> and </MASK> strings to filter \\\nout the type of mob/item affected; see HELP ZAPPERMASK for more information on that.\n\nEXPIRE=\\\nCommand : EXPIRE\\n\\r\\\nUsage   : EXPIRE [PLAYERNAME] ([NEW DAYS REMAINING]) \\n\\r\\\nExample : expire bob\\n\\r\\\nExample : expire bob 15\\n\\r\\\nShort(s): \\n\\r\\\nThis command sets and displays the amount of active days a user has left.  This command \\\nis only relevant if the account expiration system is enabled in your coffeemud.ini file.\n\nGENERATE=\\\nCommand : GENERATE\\n\\r\\\nUsage   : GENERATE [OBJ TYPE] [ID] (FROM [FILENAME]) ([VAR]=[VAL]...) ([DIRECTION])\\n\\r\\\nExample : generate area maze_dungeon from randareas/example.xml areasize=50 "areaname= the test" \\\nlevel_range=10?20 aggrochance=50 theme=kobolds south\\n\\r\\\nExample : generate string list\\n\\r\\\n\\n\\r\\\nThis command uses an xml file to generate random content for your mud.  This content can \\\nbe anything from whole areas, to rooms, mobs, items, or simple strings. By default, the \\\ncontent is built from the file in resources/randareas/example.xml, though the builder \\\nmay specify his or her own xml file path as one of the many arguments.  The arguments, \\\nbriefly, are:\\n\\r\\\n\\n\\r\\\nOBJ TYPE: One of the following: AREA, ROOM, MOB, ITEM, or STRING.\\n\\r\\\n\\n\\r\\\nID      : one of the "id" xml attributes defined on any tag in the XML file. \\\nUse GENERATE STRING LIST for a list of all "id" attributes defined in your file.\\n\\r\\\n\\n\\r\\\nFROM "F": An optional argument to specify your own xml file, with the resources \\\ndirectory being the default root.\\n\\r\\\n\\n\\r\\\nVAR=VAL : One or more variables and their definitions.  Many tags will have a specific set of required \\\nvariables which must be defined in order for the content to be generated.  Failing to specify \\\none of the required variables will cause an error message listing the variables which must \\\nbe defined, and the type of data required for the variable.  Variable types which list numbers \\\nas their data types may also have math expressions values (so you can use random numbers).  See \\\nthe help on MATH EXPRESSION for more information on this.  In addition to required variables, you \\\nmay also use the space to enter one or more "override" values.  Many object fields (such as LEVEL \\\nfor mobs and items, or NAME, etc) as well as the XML id tags, can have their "random" values overridden \\\nby defining them using the generate command.  If you need to use a space in a variable value, enclose \\\nthe ENTIRE definition in quotes, such as "areaname=the dungeon" instead of areaname="the dungeon".\\n\\r\\\n\\n\\r\\\nDIRECTION: This applies only to ROOM and AREA object types.  The object, if successfully generated, will \\\nbe linked to the current room that the player is standing in, in the direction they specify.\\n\\r\\\n\\n\\r\\\nIn closing, the GENERATE command is an interesting way to deliver large amounts of dynamic content \\\nfor your world, though it can never replace the caring touch of a real, creative builder.  If \\\nanyone is interested in writing their own xml content, please open up the /resources/randareas/example.xml \\\nfile and begin reading. Use that file as an example on how to construct your own.\n\nI3_CHANNELS=\\\nCommand  : I3 CHANNELS\\n\\r\\\nUsage    : I3 CHANNELS\\n\\r\\\nExample  : i3 channels\\n\\r\\\nShort(s) : \\n\\r\\\nLists all the channels available on the InterMud3 network, even those \\\nwhich your mud does not subscribe to.\n\nJCONSOLE=\\\nCommand : JCONSOLE\\n\\r\\\nUsage   : JCONSOLE [TOPICNAME]\\n\\r\\\nExample : jconsole ([statement])\\n\\r\\\nShort(s): \\n\\r\\\nWhen entered with a statement, this command will execute the single javascript statement \\\nand exit.  When entered alone, it will enter a console where the user can enter as many \\\njavascript statements as they want, and the system will even remember any variables or \\\nfunctions they\'ve defined later one (does NOT survive reboots!).  All the Scriptable/MOBPROG \\\ncommands and functions are also available, though the commands and functions must be entered \\\nin ALL UPPERCASE, and commands must have their parameters separated by commas instead of spaces, \\\nbe put into quotes, and surrounded by parenthesis like javascript function calls.  \\\nLastly, for entering multi-line data, you can enter multi line mode by entering < by itself, \\\nand exiting by entering > by itself.\n\n\nRESET_ROOM=RESET\nRESET_AREA=RESET\nRESET_REJUV=RESET\nRESET_RELEVEL=RESET\nRESET_MOBCOMBATSTATS=RESET\nRESET_ITEMSTATS=RESET\nRESET_PASSWORD=RESET\nRESET_PASSWORDS=RESET\nRESET_INIFILE=RESET\nRESET=\\\nCommand  : RESET\\n\\r\\\nUsage    : RESET (REJUV) ROOM/AREA (ITEMS/MOBS)\\n\\r\\\nUsage    : RESET MOBCOMBATSTATS ROOM/AREA/WORLD/CATALOG (NOSAVE) ([AREANAME])\\n\\r\\\nUsage    : RESET ITEMSTATS ROOM/AREA/WORLD/CATALOG (NOSAVE) ([AREANAME])\\n\\r\\\nUsage    : RESET INIFILE\\n\\r\\\nUsage    : RESET PASSWORD [NAME]\\n\\r\\\nUsage    : RESET RELEVEL\\n\\r\\\nExample  : reset room\\n\\r\\\nExample  : reset area\\n\\r\\\nExample  : reset rejuv area items\\n\\r\\\nExample  : reset mobcombatstats world\\n\\r\\\nExample  : reset itemstats catalog nosave midgaard\\n\\r\\\nExample  : reset password krogon\\n\\r\\\nShort(s) : \\n\\r\\\nThe reset room or area command will revive any wandered or \\\ndead mobs whose location is the same as the invokers.  Any \\\nremoved items which are resettable will also return.  Any items \\\nor mobs which do not belong in the location will be returned to \\\ntheir proper homes.\\n\\r\\\n\\n\\r\\\nThe reset rejuv room or area command will revive any dead mobs or \\\nresettable items at the location of the invoker.  Mobs that have \\\nwandered away will not be returned.  No other mobs or items in the \\\nroom will be affected.\\n\\r\\\n\\n\\r\\\nThe reset itemstats and reset mobstats commands serve a similar \\\npurpose.  Both will modify the vital statistics of all the mobs \\\nor items in the room, area, world, or catalog specified.  The \\\nstatistics will be "normalizations" of vital combat scores based \\\non the mob or items level, and the game engine\'s definition of \\\nnominal ratings for that level.  They will \\\nallow a "preview" of changes to be made by specifying the "nosave" \\\nparameter on the command line, which prevents permanent changes.  \\\nArea names may also be specified on the command line to cause the \\\ncommand to skip certain areas (for use with WORLD parameter only).\\n\\r\\\n\\n\\r\\\nReset relevel is a dangerous but potentially time saving command to \\\nchange the levels of all mobs and items in the same area as the user from \\\nfalling within its current range of levels to a new range.  See help \\\n[areaname] to see the existing minimum and maximum levels of the area. \\\n\\n\\r\\\nThe reset password command will let you generate a random password \\\nfor the given player or account and email it to their address on file, \\\nor change it to a neutral word when no email address is on file.\\n\\r\\\n\\n\\r\\\nYou can also reload your ini settings, or the lists.ini file using \\\nreset inifile.\n\nLIST=\\\nCommand : LIST\\n\\r\\\nUsage   : LIST ([SHOPKEEPER])\\n\\r\\\nExample : list\\n\\r\\\nExample : list quests\\n\\r\\\nExample : list reports\\n\\r\\\nExample : list areas\\n\\r\\\nExample : list log last 10\\n\\r\\\nShort(s): \\n\\r\\\nThe normal player version of this command will display the items \\\nwhich a particular shopkeeper MOB may be selling, along with the \\\nprices being offered to your characters. \\n\\r\\\n\\n\\r\\\nThe Admin version can also be qualified with UNLINKEDEXITS, ITEMS, ARMOR, ENVRESOURCES, \\\nWEAPONS, MOBS, ROOMS, AREA, LOCALES, BEHAVIORS, EXITS, RACES, CLASSES, STAFF, \\\nSPELLS, SONGS, PRAYERS, PROPERTIES, THIEFSKILLS, COMMON, JOURNALS, SKILLS, \\\nQUESTS, DISEASES, POISONS, TICKS, MAGIC, TECH, CLANITEMS, COMMANDJOURNAL, \\\nTITLES, NOPURGE, BANNED, RACECATS, LOG, USERS, LINKAGES, REPORTS, THREADS, \\\nRESOURCES, ONEWAYDOORS, CHANTS, POWERS, SUPERPOWERS, CLANS, GOVERNMENTS, CRON, \\\nFACTIONS, MATERIALS, OBJCOUNTERS, POLLS, CONTENTS, BUGS, TYPOS, IDEAS, TASKS, \\\nNEWS, AREAS, SESSIONS, AREATYPE, REALESTATE, SELECT:, or AUTOAWARDS, ASSISTS... \\\ndepending upon the listers security.\\n\\r\\\n\\n\\r\\\nAdditional help *may* be available by entering HELP LIST [X] where X is one of the above.\n\nSESSIONS=LIST_SESSIONS\n\nLIST_ABILITYCODES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST ABILITYCODES\\n\\r\\\nExample  : list abilitycodes\\n\\r\\\nLists the general categories of abilities, sometimes called ACODES.\n\nLIST_SELECT=\\\nCommand  : LIST SELECT:\\n\\r\\\nUsage    : LIST SELECT: [MQL STRING]\\n\\r\\\nUsage    : LIST AREA SELECT: [MQL STRING]\\n\\r\\\nExample  : list select: name from mobs where \'here\' in name\\n\\r\\\nExample  : list area select: name from mobs where \'here\' in name\\n\\r\\\nExecutes a search using the MQL query language.  \n\nLIST_CRON=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST CRON\\n\\r\\\nExample  : list cron\\n\\r\\\nLists the cron jobs created on this server.\n\nLIST_WHO=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST WHO\\n\\r\\\nExample  : list who\\n\\r\\\nLists the characters online.\n\nLIST_STUCK=LIST_STUCKS\nLIST_STUCKS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST STUCKS\\n\\r\\\nExample  : list stucks\\n\\r\\\nLists the journal entries in SYSTEM_STUCK\n\nLIST_SQL=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST SQL [SQL QUERY]\\n\\r\\\nExample  : list sql select CMUSERID from CMCHAR\\n\\r\\\nReturns the results of a SQL query to the database.\n\nLIST_PLANES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST PLANES\\n\\r\\\nExample  : list planes\\n\\r\\\nLists the planes of existence.\n\nLIST_ABILITYFLAGS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST ABILITYFLAGS\\n\\r\\\nExample  : list abilityflags\\n\\r\\\nLists the complete set of flags that can be assigned to a general ability id.\n\nLIST_ASSISTS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST ASSISTS\\n\\r\\\nExample  : list assists\\n\\r\\\nLists the temporary request for assistance from the players.\n\nLIST_BANKS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST BANKS\\n\\r\\\nExample  : list banks\\n\\r\\\nLists all the bank mobs in the world.\n\nLIST_BUGS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST BUGS (TO)\\n\\r\\\nExample  : list bugs\\n\\r\\\nExample  : list bugs bob\\n\\r\\\nLists all the entries in the SYSTEM_BUGS journal.  An optional name can be appended \\\nto show entries assign to that name.\n\nLIST_IDEAS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST IDEAS (TO)\\n\\r\\\nExample  : list ideas\\n\\r\\\nExample  : list ideas bob\\n\\r\\\nLists all the entries in the SYSTEM_IDEAS journal.  An optional name can be appended \\\nto show entries assign to that name.\n\nLIST_TYPOS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST TYPOS (TO)\\n\\r\\\nExample  : list typos\\n\\r\\\nExample  : list typos bob\\n\\r\\\nLists all the entries in the SYSTEM_TYPOS journal.  An optional name can be appended \\\nto show entries assign to that name.\n\nLIST_UNLINKEDEXITS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST UNLINKEDEXITS (LOG)\\n\\r\\\nExample  : list unlinkedexits\\n\\r\\\nExample  : list unlinkedexits log\\n\\r\\\nLists all the rooms which have directions for which an exit has been defined, \\\nbut does not link to any room. Adding the log parameter will dump all that stuff \\\nto your mud.log\n\nLIST_GENSTATS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST GENSTATS ([CLASS]/[ID]/[ITEM/MOB/WHATEVER NAME])\\n\\r\\\nExample  : list genstats GenWeapon\\n\\r\\\nExample  : list genstats orc\\n\\r\\\nExample  : list genstats GenItem\\n\\r\\\nExample  : list genstats door\\n\\r\\\nShows the Generic Item stat names for the given class or item.  These \\\nnames are used in scripting, in random area xml, and the gmodify command.\n\nLIST_ITEMS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST ITEMS\\n\\r\\\nExample  : list items\\n\\r\\\nShows the item java classes (item ids) available to archons.\n\nLIST_COMMANDS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST COMMANDS ([PLAYER])\\n\\r\\\nExample  : list commands\\n\\r\\\nExample  : list commands bob\\n\\r\\\nShows the list of all trigger/command words.  A player may \\\noptionally be given to change the available commands list. \n\nLIST_SOCIALS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST SOCIALS\\n\\r\\\nExample  : list socials\\n\\r\\\nShows the list of all base socials.\n\nLIST_ABILITYDOMAINS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST ABILITYDOMAINS\\n\\r\\\nExample  : list abilitydomains\\n\\r\\\nShows the list of domains that abilities, skills, spells, chants, etc belong to.\n\nLIST_AREATYPES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST AREATYPES\\n\\r\\\nExample  : list areatypes\\n\\r\\\nShows the list of the area type ids (class ids).\n\nLIST_ARMOR=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST ARMOR\\n\\r\\\nExample  : list armor\\n\\r\\\nShows the armor java classes (item ids) available to archons.\n\nLIST_ACHIEVEMENTS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST ACHIEVEMENTS\\n\\r\\\nExample  : list achievements\\n\\r\\\nShows all the achievements available to players.\n\nLIST_ENVRESOURCES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST ENVRESOURCES (SHORT) (MASK)\\n\\r\\\nExample  : list envresources\\n\\r\\\nExample  : list envresources short\\n\\r\\\nExample  : list envresources Vegetation\\n\\r\\\nLists all the raw material resources defined for your mud, along with its \\\nmaterial type, money value, frequency of occurrence, strength, and what kinds \\\nof Locales the resource may be gathered from using the appropriate skill.\\n\\r\\\n\\n\\r\\\nAdding the short parameter just shows a raw list of resource names.  Adding a \\\nmask will limit the list to those things that contain the mask.\n\nLIST_EXPIRED=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST EXPIRED\\n\\r\\\nExample  : list expired\\n\\r\\\nLists all the accounts which have expired.\n\nLIST_WEAPONS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST WEAPONS\\n\\r\\\nExample  : list weapons\\n\\r\\\nShows the weapon java classes (item ids) available to archons.\n\nLIST_MOBS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST MOBS\\n\\r\\\nExample  : list mobs\\n\\r\\\nShows the mob java classes (mob ids) available to archons.\n\nLIST_ROOMS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST ROOMS ([FILTER])\\n\\r\\\nExample  : list rooms\\n\\r\\\nExample  : list rooms garden\\n\\r\\\nLists all the rooms in the current area, along with the short display name of \\\neach room.  The room id and display name can be filtered by a given string.\n\nLIST_AREA=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST AREA (ROOM/MOB/ITEM/SHOPS/MOBMASK/ITEMMASK) ([MASK])\\n\\r\\\nExample  : list area\\n\\r\\\nExample  : list area mob creeper\\n\\r\\\nExample  : list area mobmask -race +elf\\n\\r\\\nLists all the rooms in the current area, along with the locale type of each room. \\\nOptionally, a specifier can be added to search for rooms, mobs, items by name, or \\\nmobs and items by zapper mask using the mobmask/itemmask parameters. \n\nLIST_LIBRARIES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST LIBRARIES\\n\\r\\\nExample  : list libraries\\n\\r\\\nLists all the librarian mobs in the world.\n\nLIST_LOCALES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST LOCALES\\n\\r\\\nExample  : list locales\\n\\r\\\nShows the list of room java classes (locale ids) available to archons.\n\nLIST_BEHAVIORS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST BEHAVIORS\\n\\r\\\nExample  : list behaviors\\n\\r\\\nShows the list of behavior java classes (behavior ids) available to archons.\n\nLIST_EXITS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST EXITS\\n\\r\\\nExample  : list exits\\n\\r\\\nShows the list of exit java classes (exit ids) available to archons.\n\nLIST_FILEUSE=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST FILEUSE [PATH]\\n\\r\\\nExample  : list fileuse progs/knucklebones.script\\n\\r\\\nShows the currently loaded objects in the game that are making use of the given script. \\\nThe path may be a full path, or a partial-resources-path.\n\nLIST_RACES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST RACES (SHORT) (MASK)\\n\\r\\\nExample  : list races\\n\\r\\\nExample  : list races short\\n\\r\\\nExample  : list races avian\\n\\r\\\nShows the list of race java classes (race ids) available to archons. \\\nRaces will have their racial categories shown in () next to the ID. \\\nRaces with an * next to them are Generic.  Adding the short parameter \\\nwill only show a simple list of race ids.  Adding a mask will limit the \\\nlist to races containing the word.\n\nLIST_CLASSES=\\\nCommand  : LIST CLASSES\\n\\r\\\nUsage    : LIST CLASSES (SHORT)\\n\\r\\\nExample  : list classes\\n\\r\\\nExample  : list classes short\\n\\r\\\nShows the list of char class java classes (charclass ids) available to archons. \\\nCharclasses will have their base classes shown in () next to the ID. \\\nCharclasses with an * next to them are Generic.  Adding the short parameter \\\nwill only show a simple list of char class ids.\n\nLIST_STAFF=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST STAFF\\n\\r\\\nExample  : list staff\\n\\r\\\nLists all the areas, along with any Area SubOps defined for those areas.\n\nLIST_SHIPS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST SHIPS\\n\\r\\\nExample  : list ships\\n\\r\\\nShows all the active ships, sailing and space-bourne, in the universe.\n\nLIST_ABILITIES=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST ABILITIES (DOMAIN/FLAG)\\n\\r\\\nExample  : list abilities\\n\\r\\\nExample  : list abilities enchantment/charm\\n\\r\\\nExample  : list abilities moving\\n\\r\\\nShows the list of java classes (ability ids) available to archons. \\\nFor domain options, do LIST ABILITYDOMAINS, and for flags \\\nLIST ABILITYFLAGS\n\nLIST_SPELLS=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST SPELLS (DOMAIN)\\n\\r\\\nExample  : list spells\\n\\r\\\nExample  : list spells enchantment/charm\\n\\r\\\nShows the list of spell java classes (ability ids) available to archons.\n\nLIST_SONGS=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST SONGS (DOMAIN)\\n\\r\\\nExample  : list songs\\n\\r\\\nShows the list of song java classes (ability ids) available to archons.\n\nLIST_POSTOFFICES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST POSTOFFICES\\n\\r\\\nExample  : list postoffices\\n\\r\\\nLists all the post office mobs in the world.\n\nLIST_PRAYERS=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST PRAYERS (DOMAIN)\\n\\r\\\nExample  : list prayers\\n\\r\\\nShows the list of prayer java classes (ability ids) available to archons.\n\nLIST_PROPERTIES=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST PROPERTIES\\n\\r\\\nExample  : list properties\\n\\r\\\nShows the list of property java classes (ability ids) available to archons.\n\nLIST_STATS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST STATS [CLASS ID]/[NAME]/HERE/[DIRECTION]\\n\\r\\\nExample  : list stats GenItem\\n\\r\\\nExample  : list stats bob\\n\\r\\\nExample  : list stats sword\\n\\r\\\nExample  : list stats north\\n\\r\\\nExample  : list stats here\\n\\r\\\nLists the readable and modifiable stat variables for a given class or object. \\\nThese are the keys used in GMODIFY and GSTAT Scriptable command and so forth.\n\nLIST_TASKS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST TASKS\\n\\r\\\nExample  : list tasks\\n\\r\\\nLists the entries in the task channel, if it exists.\n\nLIST_TECHSKILLS=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST TECHSKILLS\\n\\r\\\nExample  : list techskills\\n\\r\\\nShows the list of tech skill java classes (ability ids) available to archons.\n\nLIST_THIEFSKILLS=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST THIEFSKILLS (DOMAIN)\\n\\r\\\nExample  : list thiefskills\\n\\r\\\nShows the list of thief skill java classes (ability ids) available to archons.\n\nLIST_COMMON=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST COMMON (DOMAIN)\\n\\r\\\nExample  : list common\\n\\r\\\nShows the list of common skill java classes (ability ids) available to archons.\n\nLIST_JOURNALS=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST JOURNALS\\n\\r\\\nExample  : list journals\\n\\r\\\nShows the list of all Journals (message/note areas) that exist in your database, \\\nalong with the number of entries in each journal.\n\nLIST_COMMANDJOURNALS=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST COMMANDJOURNALS\\n\\r\\\nExample  : list commandjournals\\n\\r\\\nShows the list of all Command Journals (message/note areas) that exist in your system, \\\nalong with the number of entries in each journal in the database.\n\nLIST_SKILLS=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST SKILLS (DOMAIN)\\n\\r\\\nExample  : list skills\\n\\r\\\nShows the list of all skills (ability ids) available to archons.\n\nLIST_SOFTWARE=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST SOFTWARE\\n\\r\\\nExample  : list software\\n\\r\\\nShows the list of all software (tech item ids) available to archons.\n\nLIST_QUESTS=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST QUESTS\\n\\r\\\nExample  : list quests\\n\\r\\\nLists all the quests being managed by the quest manager, along with the current \\\nstatus of the quest (running, or not), and if it is time-delayed, how long until \\\nthe quest will attempt to start again.\n\nLIST_QUESTNAMES=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST QUESTNAMES\\n\\r\\\nExample  : list questNAMEs\\n\\r\\\nLists all the quests being managed by the quest manager, along with the display \\\nname of the quests (if any).\n\nLIST_QUESTWINNERS=\\\nCommand  : LIST \\n\\r\\\nUsage    : LIST QUESTWINNERS (NAME)\\n\\r\\\nExample  : list questwinners\\n\\r\\\nExample  : list questwinners myquest\\n\\r\\\nLists all the quests being managed by the quest manager, along with all the winners \\\nof the quests.  A name may be optionally given to narrow down which quests are shown.\n\nLIST_DISEASES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST DISEASES\\n\\r\\\nExample  : list diseases\\n\\r\\\nShows the list of all diseases (ability ids) available to archons.\n\nLIST_POISONS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST POISONS\\n\\r\\\nExample  : list poisons\\n\\r\\\nShows the list of all poisons (ability ids) available to archons.\n\nLIST_LANGUAGES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST LANGUAGES\\n\\r\\\nExample  : list languages\\n\\r\\\nShows the list of all languages (ability ids) available to archons.\n\nLIST_TICKS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST TICKS ([GROUP NUMBER]/ACTIVE/PROBLEMS/[MASK]) (COL)\\n\\r\\\nExample  : list ticks\\n\\r\\\nExample  : list ticks 7\\n\\r\\\nExample  : list ticks active\\n\\r\\\nExample  : list ticks problems\\n\\r\\\nShows the list of ticking objects in the game.  A ticking object is simply \\\none that may get thread time at some point from the engine.  By default, each \\\nentry consists of a group id, the name of the object that is ticking, the ID \\\nof the tick-type, and a status or ! if the object is not ticking.\\n\\r\\\n\\n\\r\\\nValid parameters include a tick group number, the word "active" to only show \\\nticks that are currently receiving thread time, "problems" to receive a list of \\\nthe ticks that have consumed the most average thread time, or a string mask to \\\nfilter by object name.\\n\\r\\\n\\n\\r\\\nThe last column of each report may be replaced by adding a valid column name to \\\nthe end of the list command.  Valid columns include: \\\ntickername, tickerid, tickerstatus, tickerstatusstr, tickercodeword, tickertickdown, \\\ntickerretickdown, tickermillitotal, tickermilliavg, tickerlaststartmillis, tickerlaststopmillis,\\\ntickerlaststartdate, tickerlaststopdate, tickerlastduration, tickersuspended\n\nLIST_MAGIC=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST MAGIC\\n\\r\\\nExample  : list magic\\n\\r\\\nShows the list of magic item java classes (item ids) available to archons.\n\nLIST_TECH=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST TECH\\n\\r\\\nExample  : list tech\\n\\r\\\nShows the list of tech item java classes (item ids) available to archons.\n\nLIST_CLANITEMS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST CLANITEMS\\n\\r\\\nExample  : list clanitems\\n\\r\\\nShows the list of clan item java classes (item ids) available to archons.\n\nLIST_COMMANDJOURNAL=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST COMMANDJOURNAL\\n\\r\\\nExample  : list commandjournal\\n\\r\\\nFurther help is not yet available. May be unimplemented.\n\nLIST_REALESTATE=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST REALESTATE (/AREA/WORLD) ([OWNER NAME])\\n\\r\\\nExample  : list realestate\\n\\r\\\nExample  : list realestate world bob\\n\\r\\\nExample  : list realestate area\\n\\r\\\nLists all the rooms for sale in the current area, along with the current \\\nname of the room, the current owner (if any) and the price.\n\nLIST_NOPURGE=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST NOPURGE\\n\\r\\\nExample  : list nopurge\\n\\r\\\nLists the names of accounts or players who are exempt from the account/player \\\npurging rules defined in your coffeemud.ini file.  In short, these users will \\\nnever be deleted, even if they never ever log in again.\n\nLIST_BANNED=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST BANNED\\n\\r\\\nExample  : list banned\\n\\r\\\nLists the player names, ip addresses, or ip masks that are banned from your mud.\n\nLIST_RACECATS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST RACECATS (SHORT)\\n\\r\\\nExample  : list racecats\\n\\r\\\nExample  : list racecats short\\n\\r\\\nLists the unique racial categories of all the races in coffeemud. Adding the \\\nshort param will just make the list look different.\n\nLIST_LOG=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST LOG (FRONT [NUMBER]/BACK [NUMBER]/SKIP [NUMBER])\\n\\r\\\nExample  : list log\\n\\r\\\nExample  : list log first 10\\n\\r\\\nExample  : list log last 20\\n\\r\\\nExample  : list log skip 50\\n\\r\\\nDisplays the server log.  If you use the first X param, it will only show the first X \\\nlines of the log.  If you use the last X param, it will only show the last X lines.  If \\\nyou use the skip X param, it will show the entire log after the first X lines.\n\nLIST_USERS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST USERS (LOADED) (COLUMN NAME)\\n\\r\\\nExample  : list users\\n\\r\\\nExample  : list users ip\\n\\r\\\nLists all the players in your game database, showing by default their race, current class, \\\nlevel, hours played, last login time/date, and name.  If you specify a column name of \\\nNAME, CLASS, RACE, LEVEL, AGE, LAST, EMAIL, or IP, then that column will be shown if it \\\nis not available, and the list will be sorted by that column.  The LOADED argument may \\\nbe prefixed to show only the users cached in memory.\n\nLIST_LINKAGES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST LINKAGES (WORLD) (SUBSTATS)\\n\\r\\\nExample  : list linkages\\n\\r\\\nThis bizarre command will list area rooms, showing number of rooms, number of mobs, \\\naverage mob levels, and average alignment.  It will also show how many groups of rooms \\\nrefer back to other rooms in the area, and which areas rooms in this area link to. \\\nIf you add the WORLD parameter, then all areas are listed.  If you add the SUBSTATS \\\nparameter, then the linking areas stats are shown instead of the linking room ids.\n\nLIST_REPORTS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST REPORTS\\n\\r\\\nExample  : list reports\\n\\r\\\nShows a brief report on resource usage of your mud, such as memory, total cpu times, \\\naverage cpu times for ticking objects, number of tick groups and ticking objects, etc. \\\nIt will also enumerate the several main service threads of the mud, and show their status \\\nas well.\n\nLIST_THREADS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST THREADS (SHORT) (EXTEND)\\n\\r\\\nExample  : list threads\\n\\r\\\nExample  : list threads short\\n\\r\\\nLists all the threads running in the mud, along with what they are doing, if that information \\\nis available.  Threads are generally idle, so that should be reflected most of the time. \\\nThe short parameter will filter out those threads sleeping, waiting, or parked in an executor. \\\nThe extend parameter will show a little more information about the thread.\n\nLIST_THREAD=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST THREAD (NAMED)\\n\\r\\\nExample  : list thread Worker0#12\\n\\r\\\nThis will just give a stack dump of a thread of the given name.  See LIST THREADS for more \\\ninformation.\n\nLIST_RESOURCES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST RESOURCES ([MASK])\\n\\r\\\nExample  : list resources\\n\\r\\\nExample  : list resources dragons den\\n\\r\\\nLists all the cached binary and text data objects in your mud.  This will include stuff like \\\nparsed MOBPROG programs, MOBPROG variables, text files, help files, area statistics, and so forth. \\\nAdding a mask parameter will limit the view of resources only to those with those keywords.\n\nLIST_ONEWAYDOORS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST ONEWAYDOORS (LOG)\\n\\r\\\nExample  : list onewaydoors\\n\\r\\\nExample  : list onewaydoors log\\n\\r\\\nLists all the rooms in your world with at least one direction where it links to another room, \\\nbut that room does NOT link back to it.  Could be indicative of a problem?  Adding a log \\\nparameter will dump this list to your mud.log.\n\nLIST_CHANTS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST CHANTS (DOMAIN)\\n\\r\\\nExample  : list chants\\n\\r\\\nShows all the chant spell java class names (ability ids) available to your archons.\n\nLIST_SUPERPOWERS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST POWERS (DOMAIN)\\n\\r\\\nExample  : list powers\\n\\r\\\nShows all the superpower java class names (ability ids) available to your archons.\n\nLIST_COMPONENTS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST COMPONENTS\\n\\r\\\nExample  : list components\\n\\r\\\nLists all the Ability IDs (skills, spells, etc) for which a component requirement \\\nhas been defined using the engine\'s component system.  It will also list a friendly description \\\nof what those component requirements are, as well as any component-specific socials defined for \\\nuse in component rituals and triggers.\n\nLIST_EXPERTISES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST EXPERTISES (MASK)\\n\\r\\\nExample  : list expertises\\n\\r\\\nExample  : list expertises work\\n\\r\\\nLists all the expertise IDs, along with their friendly names and requirements to learn.\n\nLIST_FACTIONS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST FACTIONS\\n\\r\\\nExample  : list factions\\n\\r\\\nLists the friendly names of all the factions defined in your game, along with the file/path \\\nthat defines that faction.\n\nLIST_MATERIALS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST MATERIALS\\n\\r\\\nExample  : list materials\\n\\r\\\nLists all the base material types.  Use list ENVRESOURCES for what you probably want.\n\nLIST_OBJCOUNTERS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST OBJCOUNTERS\\n\\r\\\nExample  : list objcounters\\n\\r\\\nDeprecated, but may be revived again in the future if I start seeing memory consumption issues.\n\nLIST_POLLS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST POLLS\\n\\r\\\nExample  : list polls\\n\\r\\\nLists all the player polls currently defined in the game.\n\nLIST_CONTENTS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST CONTENTS (AREA/[AREA NAME])\\n\\r\\\nExample  : list contents\\n\\r\\\nLists all the mobs and items in the current room, along with their level and alignment. \\\nAdding an AREA parameter will do this for the whole current area, or you can enter the \\\nname of a particular area. \n\nLIST_EXPIRES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST EXPIRES\\n\\r\\\nExample  : list expires\\n\\r\\\nLists all the rooms in the current area, along with when that room expires (or *).\n\nLIST_TITLES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST TITLES\\n\\r\\\nExample  : list titles\\n\\r\\\nLists all the auto-applied player titles defined in your game, along with the requirements, \\\nthat is, the trigger, that will make them available.\n\nLIST_AWARDS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST AWARDS\\n\\r\\\nExample  : list awards\\n\\r\\\nLists all the auto-applied player awards rules defined in your game, along with the requirements, \\\nthat is, the trigger, that will make them available.\n\nLIST_AREARESOURCES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST AREARESOURCES\\n\\r\\\nExample  : list arearesources\\n\\r\\\nLists all the rooms int the current area, along with the locale id, and the type of raw \\\nresource that can be gathered in that room at this moment. \n\nLIST_CONQUERED=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST CONQUERED\\n\\r\\\nExample  : list conqured\\n\\r\\\nLists all the areas in the game, along with the names of the clans that control them. \\\nAreas that list "The Archons" as controllers are un-conquerable (do not have the Conquerable \\\nbehavior on them).  Others are as listed, or blank for unconquered-at-present.\n\nLIST_HOLIDAYS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST HOLIDAYS\\n\\r\\\nExample  : list holidays\\n\\r\\\nLists all the official Holidays defined in your game, along with the areas that they are \\\nspecified to apply in (or *special* if they are multi-area).\n\nLIST_RECIPES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST RECIPES ([SKILL ID])\\n\\r\\\nExample  : list recipes\\n\\r\\\nExample  : list recipes Cooking\\n\\r\\\nBy default, this will list the names of all the common skills (ability ids) that have \\\neditable recipe lists.  If a valid ability id is specified as a parmeter, then it will \\\nlist all the editable recipes for that common skill.\n\nLIST_HELPFILEREQUESTS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST HELPFILEREQUESTS\\n\\r\\\nExample  : list helpfilerequests\\n\\r\\\nLists all the entries in your help help log, if your mud is configured to keep one.\n\nLIST_SCRIPTS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST SCRIPTS (AREA) COUNT/DETAILS/CUSTOM\\n\\r\\\nExample  : list scripts count\\n\\r\\\nExample  : list scripts details\\n\\r\\\nExample  : list scripts custom\\n\\r\\\nLists all the scripts in use in your game.  The COUNT param will show all the scripts, and \\\nhow many objects are referring to that script.  List scripts details will show the first part of the \\\nscript name, the name of the object that it is attached to, and the room where that object is \\\nlocated.  List scripts custom will show all the objects with custom scripts, the objects \\\nlocation, and a full listing of the custom script (a custom script is simply one that is hard \\\ncoded into the behavior instead of coming from a file).\n\nLIST_ACCOUNTS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST ACCOUNTS ([COLUMN NAME])\\n\\r\\\nExample  : list accounts\\n\\r\\\nExample  : list accounts email\\n\\r\\\nIf your mud is using the account system, this will list all the accounts in the game, \\\nalong with their last login date, email address, and all players associated with that account. \\\nIf you specify a column name of NAME, LAST, EMAIL, or IP, then that column will be shown if it \\\nis not available, and the list will be sorted by that column.  You can specify column name \n\nLIST_GOVERNMENTS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST GOVERNMENTS\\n\\r\\\nExample  : list governments\\n\\r\\\nLists all the clan governments that have been defined in your mud.\n\nLIST_CLANS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST CLANS\\n\\r\\\nExample  : list clans\\n\\r\\\nLists all the clans in your mud, along with the number of members each clan has. \n\nLIST_CURRENTS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST CURRENTS\\n\\r\\\nExample  : list currents\\n\\r\\\nLists all the electronic devices receiving electronic current processing in the game. \\\nThis could be groups of computers in a lab, or devices aboard a single space ship.\n\nLIST_DEBUGFLAG=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST DEBUGFLAG\\n\\r\\\nExample  : list debugflag\\n\\r\\\nLists all the debug flags that have been turned on in your system.  These flags cause \\\nextra messaging to appear in your mud log (mud.log), assuming DBGMSGS has been appropriately \\\nset in your coffeemud.ini file.\n\nLIST_DISABLEFLAG=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST DISABLEFLAG\\n\\r\\\nExample  : list disableflag\\n\\r\\\nLists all the disabled subsystems in your mud.\n\nLIST_ENABLEFLAG=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST ENABLEFLAG\\n\\r\\\nExample  : list enableflag\\n\\r\\\nLists all the currently enabled (but normally disabled) subsystems in your mud.\n\nLIST_ALLQUALIFYS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST ALLQUALIFYS\\n\\r\\\nExample  : list allqualifys\\n\\r\\\nLists all the multi-class-qualified skills defined in your All-Qualifies list in your game, \\\nalong with the level of the skill, whether it is auto-gained or not, the default proficiency, \\\nand a qualifying mask.\n\nLIST_MANUFACTURERS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST MANUFACTURERS\\n\\r\\\nExample  : list manufacturers\\n\\r\\\nLists all the tech manufacturers that have been defined in your mud.\n\nLIST_NEWS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST NEWS ([ENTRY NUMBER]/NEW/ALL)\\n\\r\\\nExample  : list news\\n\\r\\\nExample  : list news 5\\n\\r\\\nExample  : list news new\\n\\r\\\nExample  : list news all\\n\\r\\\nLists all the news items currently active in your game (these are the bulletins seen at login). \\\nIf a number is specified, only that full news item will be shown.  If the NEW parameter is used, \\\nthen only NEW news is shown.  If the ALL parameter is used, all news is shown.\n\nLIST_AREAS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST AREAS (SORTBY [COLUMN]...) (COLS [COLUMN]...))\\n\\r\\\nExample  : list areas\\n\\r\\\nExample  : list areas sortby name cols name population\\n\\r\\\nExample  : list areas sortby name\\n\\r\\\nLists all the standard areas in your game.  By default, it also shows whether the area is Hidden, \\\nhow many rooms are in the area, whether it is in a passive or active state, its current \\\npopulation, and the median level.  If the sortby parameter is used, then you can follow it \\\nwith the order of columns to sort by.  Valid columns include: NAME, AUTHOR, DESCRIPTION , \\\nROOMS, STATE, HIDDEN, POPULATION, MIN_LEVEL, MAX_LEVEL, AVG_LEVEL, MED_LEVEL, AVG_ALIGNMENT, \\\nMED_ALIGNMENT, TOTAL_LEVELS, TOTAL_INTELLIGENT_LEVELS, VISITABLE_ROOMS, INDOOR_ROOMS, PIETY.  \\\nIf the columns parameter is used, then you can follow it with columns to substitute in the table.\n\nLIST_TIMEZONES=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST TIMEZONES\\n\\r\\\nExample  : list timezones\\n\\r\\\nLists all areas grouped by their shared calendar/time.\n\nLIST_WORLD=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST WORLD (SORTBY [COLUMN]...) (COLS [COLUMN]...))\\n\\r\\\nExample  : list world\\n\\r\\\nExample  : list world sortby name cols name population\\n\\r\\\nExample  : list world sortby name\\n\\r\\\nLists all the areas in your current world, meaning areas that share the same time zone.  \\\nBy default, it also shows whether the area is Hidden, \\\nhow many rooms are in the area, whether it is in a passive or active state, its current \\\npopulation, and the median level.  If the sortby parameter is used, then you can follow it \\\nwith the order of columns to sort by.  Valid columns include: NAME, AUTHOR, DESCRIPTION , \\\nROOMS, STATE, HIDDEN, POPULATION, MIN_LEVEL, MAX_LEVEL, AVG_LEVEL, MED_LEVEL, AVG_ALIGNMENT, \\\nMED_ALIGNMENT, TOTAL_LEVELS, TOTAL_INTELLIGENT_LEVELS, VISITABLE_ROOMS, INDOOR_ROOMS.  \\\nIf the columns parameter is used, then you can follow it with columns to substitute in the table.\n\nLIST_PLANETS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST PLANETS (SORTBY [COLUMN]...) (COLS [COLUMN]...))\\n\\r\\\nExample  : list planets\\n\\r\\\nExample  : list planets sortby name cols name population\\n\\r\\\nExample  : list planets sortby name\\n\\r\\\nLists all the planets in your game.  By default, it also shows whether the planet is Hidden, \\\nhow many rooms are in the planet, whether it is in a passive or active state, its current \\\npopulation, and the median level.  If the sortby parameter is used, then you can follow it \\\nwith the order of columns to sort by.  Valid columns include: NAME, AUTHOR, DESCRIPTION , \\\nROOMS, STATE, HIDDEN, POPULATION, MIN_LEVEL, MAX_LEVEL, AVG_LEVEL, MED_LEVEL, AVG_ALIGNMENT, \\\nMED_ALIGNMENT, TOTAL_LEVELS, TOTAL_INTELLIGENT_LEVELS, VISITABLE_ROOMS, INDOOR_ROOMS.  \\\nIf the columns parameter is used, then you can follow it with columns to substitute in the table.\n\nLIST_SHIPS=LIST_SPACE\nLIST_MOONS=LIST_SPACE\nLIST_BODIES=LIST_SPACE\nLIST_STARS=LIST_SPACE\nLIST_SPACESHIPS=LIST_SPACE\nLIST_SPACE=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST SPACE (ALL)/((WITHIN [DIST]) (AROUND [X])) (SORTBY [COL])\\n\\r\\\nUsage    : LIST MOONS (ALL)/((WITHIN [DIST]) (AROUND [X])) (SORTBY [COL])\\n\\r\\\nUsage    : LIST BODIES (ALL)/((WITHIN [DIST]) (AROUND [X])) (SORTBY [COL])\\n\\r\\\nUsage    : LIST STARS (ALL)/((WITHIN [DIST]) (AROUND [X])) (SORTBY [COL])\\n\\r\\\nUsage    : LIST SPACESHIPS (ALL)/((WITHIN [DIST]) (AROUND X])) (SORTBY [COL])\\n\\r\\\nExample  : list planets all sortby name\\n\\r\\\nExample  : list space around tattooine within 100 ly\\n\\r\\\nShows the objects in space, or just the moons, planetary bodies, stars, or spaceships.  \\\nYou can specify to only see the ones within a particular distance (in dm, km, ly, lm, lh, etc..\\\nof either the current planet/ship or the specified space object X.  Lastly, you can \\\nsort the list by name, coordinates, or whatever.\n\nLIST_SPACESHIPAREAS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST SPACESHIPS (SORTBY [COLUMN]...) (COLS [COLUMN]...))\\n\\r\\\nExample  : list spaceships\\n\\r\\\nExample  : list spaceships sortby name cols name population\\n\\r\\\nExample  : list spaceships sortby name\\n\\r\\\nLists all the spaceships in your game.  By default, it also shows whether the ship is Hidden, \\\nhow many rooms are in the ship, whether it is in a passive or active state, its current \\\npopulation, and the median level.  If the sortby parameter is used, then you can follow it \\\nwith the order of columns to sort by.  Valid columns include: NAME, AUTHOR, DESCRIPTION , \\\nROOMS, STATE, HIDDEN, POPULATION, MIN_LEVEL, MAX_LEVEL, AVG_LEVEL, MED_LEVEL, AVG_ALIGNMENT, \\\nMED_ALIGNMENT, TOTAL_LEVELS, TOTAL_INTELLIGENT_LEVELS, VISITABLE_ROOMS, INDOOR_ROOMS.  \\\nIf the columns parameter is used, then you can follow it with columns to substitute in the table.\n\nLIST_SESSIONS=\\\nCommand  : LIST\\n\\r\\\nUsage    : LIST SESSIONS (STATUS/VALID/NAME/IP/IDLE)\\n\\r\\\nExample  : list sessions\\n\\r\\\nExample  : list sessions name\\n\\r\\\nLists the players online, their idle time, status, and ip address.  An \\\noptional parameter may be given to sort by one of the fields.\n\nSTUCK=A COMMAND JOURNAL.  See Archon Help (AHELP) on COMMAND JOURNALS\n\nNOPURGE=\\\nCommand : NOPURGE\\n\\r\\\nUsage   : NOPURGE [PLAYER NAME]\\n\\r\\\nExample : nopurge bob\\n\\r\\\nShort(s): \\n\\r\\\nMakes a player inelligible for purging by the autopurge system.  Use LIST NOPURGE, \\\nor DESTROY NOPURGE for maintaining the list.\n\n\nLINK=\\\nCommand : LINK\\n\\r\\\nUsage   : LINK [ROOMID] [DIRECTION]\\n\\r\\\nExample : link midgaard#3001 north\\n\\r\\\nExample : link Smurfy Road east\\n\\r\\\nExample : link midgaard#3001#(3,2) north\\n\\r\\\nShort(s): \\n\\r\\\nA command for the linking of rooms to each other, including grid rooms.\n\t\nLOAD=\\\nCommand : LOAD\\n\\r\\\nUsage   : LOAD [OBJECT TYPE] [PATH/NAME]\\n\\r\\\nExample : load resource banned.ini\\n\\r\\\nExample : load ability /myclasses/blah.class\\n\\r\\\nExample : load weapon /myclasses/blah2.class\\n\\r\\\nExample : load class com.planet_ink.coffee_mud.Items.Weapons.Sword.class\\n\\r\\\nExample : load weapon com/planet_ink/coffee_mud/Items/Weapons/Sword.java\\n\\r\\\nShort(s): \\n\\r\\\nA command for the loading of resources, faction ini files, unloaded areas, \\\nor class files of java or javascript.\\n\\r\\\n\\n\\r\\\nUse LIST RESOURCES to see a list of resources.\\n\\r\\\n\\n\\r\\\nUse LOAD AREA area name re-load areas in the database that have been unloaded.\\n\\r\\\n\\n\\r\\\nFor class files, the LIST command can also show whats already loaded.  This command \\\nwill automatically attempt to unload a class if it is already loaded.  If the specified \\\nclass is a java source file or javascript, it will attempt to compile it first.  \\\nFor loading classes, the second parameter may be the word "class" and the system \\\nwill attempt to correct your ambiguity.  If it is unable to determine the type of \\\nclass being loaded, however, you may get an error.  It is therefore better just \\\nto use the load [CLASS-TYPE] syntax instead.\n\t\nMODIFY=\\\nCommand : MODIFY\\n\\r\\\nUsage   : MODIFY [ITEM TYPE] ... \\n\\r\\\nExample : modify room name The Grassy Knole\\n\\r\\\nExample : modify mob orc\\n\\r\\\nExample : modify item longsword\\n\\r\\\nExample : modify item "longsword@an orc"\\n\\r\\\nExample : modify jscript\\n\\r\\\nExample : modify news\\n\\r\\\nShort(s): \\n\\r\\\nA command for the modification of an item, race, class, ability, language, craftskill, \\\ngatherskill, wrightskill, allqualify, area, exit, component, recipe, expertise, title, \\\nquest, mob, user, holiday, achievement, manufacturer, help/ahelp, trap, government, \\\njscript, faction, social, clan, poll, news, day, month, year, time, hour, update:, or room. \\\nEnter MODIFY or MODIFY X for more information on command usage.\n\t\nI3=\\\nThis refers to the InterMud3 system, which may or may not be \\\navailable on your system.  Enter I3 by itself for a list of \\\navailable commands.  For more help, enter HELP I3 LIST, HELP I3 CHANNELS, \\\nHELP I3 ADD, HELP I3 DELETE, HELP I3 LISTEN, HELP I3 LOCATE, HELP I3 SILENCE, \\\nor HELP I3 INFO.\n\nI3_ADD=\\\nCommand : I3 ADD\\n\\r\\\nUsage   : I3 ADD [REMOTE CHANNEL NAME]\\n\\r\\\nExample : i3 add BADCHAN\\n\\r\\\nShort(s): \\n\\r\\\nSends an add-channel message to the InterMud3 router.  The channel \\\nlisted must already appear in your coffeemud.ini file.\n\nI3_LISTEN=\\\nCommand : I3 LISTEN\\n\\r\\\nUsage   : I3 LISTEN [REMOTE CHANNEL NAME]\\n\\r\\\nExample : i3 listen BADCHAN\\n\\r\\\nShort(s): \\n\\r\\\nSends a listen-channel message to the InterMud3 router.  The channel \\\nlisted must already appear in your coffeemud.ini file.\n\nI3_SILENCE=\\\nCommand : I3 SILENCE\\n\\r\\\nUsage   : I3 SILENCE [REMOTE CHANNEL NAME]\\n\\r\\\nExample : i3 silence BADCHAN\\n\\r\\\nShort(s): \\n\\r\\\nSends a no-listen-channel message to the InterMud3 router.  The channel \\\nlisted must already appear in your coffeemud.ini file.  This command \\\nwill silence all traffic to your server from that channel.\n\nI3_DELETE=\\\nCommand : I3 DELETE\\n\\r\\\nUsage   : I3 DELETE [LOCAL CHANNEL NAME]\\n\\r\\\nExample : i3 delete BADCHAN\\n\\r\\\nShort(s): \\n\\r\\\nSends a remove-channel message to the InterMud3 router.  The channel \\\nlisted must already appear in your coffeemud.ini file.\n\nI3_LIST=\\\nCommand : I3 LIST\\n\\r\\\nUsage   : I3 LIST\\n\\r\\\nExample : i3 list\\n\\r\\\nShort(s): \\n\\r\\\nLists all the muds available on the InterMud3 channels.\n\nI3_LOCATE=\\\nCommand : I3 LOCATE\\n\\r\\\nUsage   : I3 LOCATE [NAME]\\n\\r\\\nExample : i3 locate bob\\n\\r\\\nShort(s): \\n\\r\\\nSends a player locate message to the InterMud3 router, which will hopefully \\\nrespond some day with the name of a mud where a player of the given name is \\\nlocated.\n\nI3_INFO=\\\nCommand : I3 INFO\\n\\r\\\nUsage   : I3 INFO [MUD NAME]\\n\\r\\\nExample : i3 info coffeemud\\n\\r\\\nShort(s): \\n\\r\\\nGive some special information about the InterMud3 mud listed.\n\nIDEA=\\\nCommand : IDEA\\n\\r\\\nUsage   : IDEA [MESSAGE]/REVIEW (FILTER) (STARTING MSG)\\n\\r\\\nUsage   : IDEA TRANSFER (FILTER) [MESSAGE NUMBER] [TARGET]\\n\\r\\\nExample : idea nothing is spelled right in this room!\\n\\r\\\nExample : idea review\\n\\r\\\nExample : idea review 7\\n\\r\\\nExample : idea review bob 7\\n\\r\\\nShort(s): \\n\\r\\\nThis command can be used to submit ideas to the system.  When \\\nthe REVIEW parameter is given, the ideas will be iterated through \\\none at a time to give the archon a chance to delete, comment on, \\\nor email each one.  An optional starting number can be given to REVIEW. \\\nAn optional filter can be given to list only messages assigned to a particular user.\n\nIMPORT=\\\nCommand  : IMPORT\\n\\r\\\nUsage    : IMPORT (NOPROMPT) (NODELETE) (AREATYPE=TYPE) [FILE NAME(S)] \\n\\r\\\nExample  : import /areas/myarea.cmare\\n\\r\\\nExample  : import noprompt nodelete /areas/midgaard.are\\n\\r\\\nExample  : import areatype=stdthininstance /areas/midgaard.are /areas/school.are\\n\\r\\\nExample  : import noprompt /areas/areas.lst\\n\\r\\\nExample  : import noprompt /areas/\\n\\r\\\nShort(s) : \\n\\r\\\nThe import command will allow you to import official coffeemud \\\narea files, whose extension is "*.cmare"\\n\\r\\\nCoffeeMud may also import, with varying levels of success, the "*.are" \\\nfiles used by other muds.  Some formats are better supported \\\nthan others, so be sure to carefully examine the imported \\\narea afterwards.\\n\\r\\\nThe import command will auto detect, based on the file given, \\\nwhether the file refers to a coffeemud area file, room file, \\\na "*.are" from another mud, or a "*.lst" list of other area \\\nfiles.\\n\\r\\\nThe CoffeeMud "resources" directory is the default path.  Remember \\\nthat all paths in CoffeeMud treat the install directory as "root\'. \\\nThis means that the files being imported must be copied into a \\\nfolder underneath your install directory before use.  See the help \\\non VFS for more information on this concept.\n\nMOTD=\\\nCommand : MOTD\\n\\r\\\nUsage   : MOTD (ON/OFF/PREVIOUS ([NUM])/AGAIN/SET)\\n\\r\\\nExample : motd\\n\\r\\\nExample : motd again\\n\\r\\\nExample : motd set\\n\\r\\\nShort(s): \\n\\r\\\nAllows the admin to review the news and daily message, or set a new daily message.  Using \\\nON and OFF, you can also set whether or not you see the message of the day when you log \\\nin to the mud.  Using AGAIN will re-show the current new daily message, \\\nwhile PREVIOUS will show all the old daily messages, with an optional limit. \\\nUse SET to set the MOTD.txt file.\n\nMERGE=\\\nCommand  : MERGE\\n\\r\\\nUsage    : MERGE (AREA/ROOM) (CHANGE=[FIELD,..]) (ON=[FIELD,..]) (IGNORE=[FIELD,..]) [PATH & FILE NAME]\\n\\r\\\nUsage    : MERGE (AREA/ROOM) DATABASE (MOBS/ITEMS/ROOMS) DBCLASS=[JAVACLASS] DBSERVICE=[DB SERVICE URL]\\n\\r\\\n:        :       DBUSER=[USERNAME] DBPASS=[PASSWORD] (IGNORE=[FIELD,..]) (MASK=[ZAPPERMASK])\\n\\r\\\nExample  : merge /myfiles/myitems.cmare\\n\\r\\\nExample  : merge change=damage,level,ability /myfiles/myweapons.cmare\\n\\r\\\nExample  : merge area change=material ignore=level /myfiles/myweapons.cmare\\n\\r\\\nExample  : merge change=damage on=name /myfiles/weapons.cmare\\n\\r\\\nExample  : merge area database dbclass=com.mysql.jdbc.Driver dbservice=jdbc:mysql://localhost:3306/db\\n\\r\\\n:        :            dbuser=username dbpass=password ignore="IMG,ATTACK" MASK="-NAMES +Bob"\\n\\r\\\nShort(s) : \\n\\r\\\nAllows you to selectively modify all instances of a mob or item in the world \\\nbased on the contents of a CMARE file containing items or mobs, or another \\\nCoffeeMud database. \\n\\r\\\n\\n\\r\\\nWhen using CMARE files, the files must be \\\ngenerated using the EXPORT (WORLD/AREA/ROOM) (ITEMS/WEAPONS) command. \\\nThe first parameter specifies whether the items in the text file are to be \\\nmerged with those in the entire world, in your current area, or just the room. \\\nThe second parameter (CHANGE) is implied to be ALL unless specified otherwise. \\\nIt denotes which fields in the existing items may be changed based on what \\\nchanges are seen to the item inside the CMARE file.   The third parameter \\\n(ON) is implied to be ALL unless specified otherwise.  It denotes how an item \\\nin the CMARE file is matched with an existing item in your world.  If the \\\nlisted fields from the CMARE file and the existing item are equal, the items \\\nwill be considered a match for the purposes of merging.  The fourth parameter \\\n(IGNORE) is implied to be NONE unless specified otherwise.  It denotes \\\nexceptions to the (ON) parameter, namely which fields are allowed to differ \\\nbetween items in the CMARE file and an existing item in cases where they would \\\notherwise be considered a match according to the (ON) parameter.  Matched \\\nitems in your existing world, in every room, will be modified accordingly, and \\\nthe room will be resaved to your database.  The log will reflect all changes \\\nmade to your world.  Every room in every area in your world will be reloaded \\\nfrom the database prior to any evaluations or changes.\\n\\r\\\n\\n\\r\\\nWhen using a database as a source, the merge command will compare and match the \\\ndatabase version of the room contents with the local world.  The user is then \\\ngiven the opportunity to make changes to the local world depending on differences. \\\nThe merge requires DBCLASS, DBSERVICE, DBUSER, and DBPASS parameters be set.  The \\\nIGNORE parameters is a comma delimited list of fields to ignore when displaying \\\ndifferences.  To mask the types of objects checked, the user can specify mobs, items, \\\nor the whole rooms after the word database, and a zappermask can be included after the \\\nmask parameters.\n\nMPCOMMAND=\\\nCommand : MPCOMMAND\\n\\r\\\nUsage   : MPxxx ([ARGUMENT]...)\\n\\r\\\nExample : MPECHO bob\\n\\r\\\nShort(s): \\n\\r\\\nExecute an MP command from the command line, for what that\'s worth.\n\nEXPORT=\\\nCommand : EXPORT\\n\\r\\\nUsage   : EXPORT (AREA/ROOM/WORLD) (DATA/ITEMS/MOBS/WEAPONS/ARMOR) ([FILE]/SCREEN/EMAIL)\\n\\r\\\nUsage   : EXPORT (CATALOG) (DATA/ITEMS/MOBS/WEAPONS/ARMOR) ([FILE]/SCREEN/EMAIL)\\n\\r\\\nUsage   : EXPORT (PLAYER/PLAYERS) (DATA/ITEMS/MOBS/WEAPONS/ARMOR) ([FILE]/SCREEN/EMAIL)\\n\\r\\\nUsage   : EXPORT (CLASS/RACE/ABILITY) (DATA/[ID]) ([FILE]/SCREEN/EMAIL)\\n\\r\\\nExample : export room myroom\\n\\r\\\nExample : export area /home/users/myarea\\n\\r\\\nExample : export area weapons /home/users/myarea\\n\\r\\\nExample : export area screen\\n\\r\\\nExample : export area email\\n\\r\\\nExample : export catalog mobs\\n\\r\\\nExample : export world data /exportfiles/\\n\\r\\\nExample : export player bob\\n\\r\\\nShort(s): \\n\\r\\\nThe export command will generate the official coffeemud area files, \\\nwhose extension is "*.cmare".  This command may also be used to export \\\nindividual rooms, player data, or unique items or mobs as well.  If the second parameter \\\n(ITEMS/MOBS/WEAPONS/etc) is NOT specified, export will produce full \\\nroom data for the scope of the first parameter (AREA, ROOM, or WORLD). \\\nIf the second parameter IS specified, then only the specified data will \\\nbe generated.\\n\\r\\\nThe results will be written to the file given in the last argument, or to the \\\nscreen if "screen" is given as the last argument, or sent to your email address \\\nif that is enabled.  The extension need not be \\\nincluded, as coffeemud will add it if not present.  If a directory name \\\nis given (no file name), the system will reference the AREA ARCHIVE file \\\nname for an Area, assuming EXPORT AREA or EXPORT WORLD is used. The default \\\ndirectory for this command is the CoffeeMud root.\n\nORDER=\\\nCommand : ORDER\\n\\r\\\nUsage   : ORDER [TARGET NAME] [COMMAND(S)]\\n\\r\\\nExample : order dog flee\\n\\r\\\nShort(s): \\n\\r\\\nThis command will allow you to force a mob to perform any command \\\nlisted in the COMMANDS or SOCIALS list.\n\t\nPOOF=\\\nCommand : POOF\\n\\r\\\nUsage   : POOF\\n\\r\\\nShort(s): \\n\\r\\\nFor those with access to the GOTO command, this command will allow the admin to change \\\nthe messages seen when they leave and enter a room via GOTO.  The S-NAME, S-HIM-HER and \\\nother codes may be used so that the admins name is properly presented.  Remember to \\\nsurround the codes with the less-than and greater-than tag markers!  You can also \\\nchange your death poof. as per the non-archon version of this command.\n\nPURGE=\\\nCommand : PURGE\\n\\r\\\nUsage   : PURGE [ITEM TYPE] ... \\n\\r\\\nExample : purge orc\\n\\r\\\nExample : purge item longsword\\n\\r\\\nExample : purge item longsword@an orc\\n\\r\\\nShort(s): \\n\\r\\\nThis command is a weak form of DESTROY, allowing only items and mobs to be \\\ndestroyed.  Rejuvinating mobs will still rejuvenate when purge is used, unlike \\\ndestroy.\n\t\nQUESTWINS=\\\nCommand : QUESTS\\n\\r\\\nUsage   : QUESTS (WON/[QUEST NAME]/[PLAYER NAME])\\n\\r\\\nExample : quests\\n\\r\\\nExample : quests won\\n\\r\\\nExample : quests bob\\n\\r\\\nShort(s): \\n\\r\\\nThis command is for listing quests one is either involved in, or \\\nwere involved in. The admin version of this command allows a player \\\nname to be specified when retreiving information, or if the quest name \\\nis supplied, the winners of the quest.  Enter HELP QUESTS \\\nfor more information on the mundane use of the command.\n\nSNOOP=\\\nCommand : SNOOP\\n\\r\\\nUsage   : SNOOP [TARGET NAME]\\n\\r\\\nExample : snoop player\\n\\r\\\nShort(s): \\n\\r\\\nThis command will allow you to watch a player play -- seeing everything \\\nthey type in, and everything they read on their screen.\n\t\nSTAT=\\\nCommand : STAT\\n\\r\\\nUsage   : STAT ((SKILL/STAT TYPE) [TARGET NAME])/([NUMBER] [DAYS/WEEKS/MONTHS/YEARS]\\n\\r\\\nUsage   : ... (/SKILLUSE/QUEST/AREA/CRIME)) (PLAYERS)\\n\\r\\\nExample : stat\\n\\r\\\nExample : stat 2 weeks\\n\\r\\\nExample : stat tom\\n\\r\\\nExample : stat equipment bob\\n\\r\\\nExample : stat combat bob\\n\\r\\\nExample : stat inventory bob\\n\\r\\\nExample : stat questwins bob\\n\\r\\\nExample : stat tattoos bob\\n\\r\\\nExample : stat titles bob\\n\\r\\\nExample : stat scripts bob\\n\\r\\\nExample : stat charstats bob\\n\\r\\\nExample : stat roomsexplored bob\\n\\r\\\nExample : stat factions bob\\n\\r\\\nExample : stat spell bob\\n\\r\\\nExample : stat skill hassan\\n\\r\\\nExample : stat chant hassan\\n\\r\\\nExample : stat prayer hassan\\n\\r\\\nExample : stat area midgaard\\n\\r\\\nExample : stat item my longsword\\n\\r\\\nExample : stat clan bob\\n\\r\\\nExample : stat fountain\\n\\r\\\nShort(s): \\n\\r\\\nThis command serves two purposes.  The first is to allow you to view \\\na usage statistics report on your mud.  Entering STAT alone allows you \\\nto see information gathered since midnight.  You may also enter a number \\\nand a scale (days, weeks, months, or years) to view information going \\\nfarther back.  Adding the PLAYERS flag at the end shows player stats \\\ninstead of character stats for the min/avg online stat ONLY.\\n\\r\\\n\\n\\r\\\nSTAT will also allow you to retrieve basic stat information on a player, mob, \\\nitem, room, or exit in the game.  Entering STAT and the objects name brings up the \\\nmost basic information.  Specifying AREA, MOB, ITEM, ROOM, or EXIT before the name \\\nwill make the search more specific. Including a skill type before a mob or player name \\\nwill list their abilities of that type.  Valid skill types include: SKILL, \\\nSPELL, PRAYER, SONG, TRAP, PROPERTY, "THIEF SKILL", LANGUAGE, CHANT, \\\n"COMMON SKILL", DISEASE, POISON.  You can also get special reports by \\\nentering one of the following before the name: EQUIPMENT, COMBAT, INVENTORY, STINK, DEITY, \\\nQUESTWINS, TATTOOS, TITLES, SCRIPTS, WORLDEXPLORED, AREASEXPLORED, ROOMSEXPLORED, ALIGNMENT, INCLINATION, \\\nFACTIONS, FACTIONID, FACTIONAMT, MATTRIB, OBJATTRIB, CLAN, CLANROLE, LEVELTIMES, and CHARSTATS.  \\\nAs per the player version of this command, you can also use \\\nbasic stats, such as: HITS, MANA, MOVE, HUNGER, THIRST, FATIGUE, MAXHITS, MAXMANA, MAXMOVE, \\\nMAXHUNGER, MAXTHIRST, MAXFATIGUE, STRENGTH, INTELLIGENCE, DEXTERITY, \\\nCONSTITUTION, CHARISMA, WISDOM, GENDER, PARALYSIS, FIRE, COLD, WATER, GAS, \\\nMIND, GENERAL, JUSTICE, ACID, ELECTRICITY, POISON, UNDEAD, MAGIC, DISEASE, \\\nTRAPS, MAXSTRENGTH, MAXINTELLIGENCE, MAXDEXTERITY, MAXCONSTITUTION, \\\nMAXCHARISMA, MAXWISDOM, REJUVRATE, AGE, DETECTION, DOUBT, FAITH, WEIGHTADJ, \\\nLEVEL, SENSES, ARMOR, DAMAGE, ATTACK, DISPOSITION, REJUV, WEIGHT, \\\nABILITY, HEIGHT, XP (experience), XPFNL (experience for next level), and \\\nXPTNL (experience to next level), QUESTPOINTS, TRAINS, PRACTICES, and any \\\nfactions shown in the score command, such as ALIGNMENT.  Many of the basic \\\ncharacter stats, such as INTELLIGENCE, etc, can also be prefixed like \\\nCURRENT_INTELLIGENCE to ensure you are getting the fully adjusted value.\n\nSAVE=\\\nCommand : SAVE\\n\\r\\\nUsage   : SAVE [ROOM, MOBS, ITEMS, QUESTS, FACTION, USERS]\\n\\r\\\nExample : save room\\n\\r\\\nExample : save users\\n\\r\\\nExample : save quests\\n\\r\\\nExample : save faction area_my_area\\n\\r\\\nShort(s): \\n\\r\\\nA command to permanently save the contents of a room, the mobs \\\nin the room, the current quests list, a specific faction, or the users who are logged in.  \\\nThe command will apply to the room in which your Character is located.\n\nBEHAVIOR_FIGHTERNESS=\\\r\nBehavior   : Fighterness\\n\\r\\\r\nTargets    : MOBs\\n\\r\\\r\nParameters : \\n\\r\\\r\nExample    : \\n\\r\\\r\nDescription: \\n\\r\\\r\nAn extension of CombatAbilities, this behavior makes the mob a Fighter by class, \\\r\nand gives the mob fighter skills appropriate to its level.  After \\\r\nlocked up threads, or to free up CPU time for other purposes.  Enter PAUSE alone \\\nto suspend and resume all objects, or specify room, area, or an object name \\\nto suspend the ticking of just that object.\nBEHAVIOR_DRUIDNESS=\\\r\nBehavior   : Druidness\\n\\r\\\r\nTargets    : MOBs\\n\\r\\\r\nParameters : \\n\\r\\\r\nExample    : \\n\\r\\\r\nDescription: \\n\\r\\\r\nAn extension of CombatAbilities, this behavior makes the mob a Druid by class, \\\r\nand gives the mob druid skills appropriate to its level.  After \\\r\n\nAFTER=\\\nCommand : AFTER\\n\\r\\\nBEHAVIOR_BARDNESS=\\\r\nBehavior   : Bardness\\n\\r\\\r\nTargets    : MOBs\\n\\r\\\r\nParameters : \\n\\r\\\r\nExample    : \\n\\r\\\r\nDescription: \\n\\r\\\r\nAn extension of CombatAbilities, this behavior makes the mob a Bard by class, \\\r\nand gives the mob bard songs appropriate to its level.  After \\\r\nmay be used to make a command automatically recurring.  after stop should be \\\nused to cancel commands created with the every parameter.\n\nTAKE=\\\nCommand : TAKE\\n\\r\\\nUsage   : TAKE (ALL) [ITEM NAME] ([MOB NAME])\\n\\r\\\nExample : take all dagger Horice\\n\\r\\\nExample : take qp Horice\\n\\r\\\nExample : take all Horice\\n\\r\\\nExample : take pie Horice\\n\\r\\\nShort(s): \\n\\r\\\nThis is A command that forces the specified mob or character \\\nto give item that is in his or her inventory or equipment to \\\nyou.  If the item is inside a specified container, it will \\\nbe retrieved from the container.  The very special item name "qp" \\\nmay be used to take Quest Points from players using this command. \n\nSHUTDOWN=\\\nCommand : SHUTDOWN\\n\\r\\\nUsage   : SHUTDOWN (IN [NUMBER] [MINS/HOURS..]) (NOPROMPT) \\n\\r\\\nExample : shutdown\\n\\r\\\nExample : shutdown noprompt\\n\\r\\\nExample : shutdown in 10 minutes\\n\\r\\\nExample : shutdown at 11:00 pm\\n\\r\\\nShort(s): \\n\\r\\\nWith no argument, this command will bring down the CoffeeMud server. \\\nYou can also specify how long before the shutdown will begin.  This \\\nwill also cause periodic warnings to your players.\n\nUNLINK=\\\nCommand : UNLINK\\n\\r\\\nUsage   : UNLINK [DIRECTION]\\n\\r\\\nExample : unlink north\\n\\r\\\nShort(s): \\n\\r\\\nA command for the unlinking of rooms from each other.\n\nGMODIFY=\\\nCommand : GMODIFY\\n\\r\\\nUsage   : GMODIFY (AREA/ROOM/WORLD/PLAYERS) [FIELD=VAL](&&/||[...])\\n\\r\\\nUsage   :         (CHANGE=[FIELD=VAL])\\n\\r\\\nExample : gmodify area class=genmob&&name=the cityguard change=name=the guard\\n\\r\\\nExample : gmodify world class=[cs]GenMob&&name=[ss]city change=name=[ss]\\n\\r\\\nExample : gmodify world class=[cs]GenItem&&name=a rusty sword change=destroy=true\\n\\r\\\nExample : gmodify players charclass=Fighter\\n\\r\\\nExample : gmodify ?\\n\\r\\\nShort(s): \\n\\r\\\nA command to select objects in a given area, room, or the whole world \\\nbased on the specified field values, and optionally change some of \\\nthose specified fields.\\n\\r\\\n\\n\\r\\\nSearching the entire world is implied, but the first parameter may be \\\nthe word AREA or ROOM to narrow the search.  You may also enter WORLD \\\nto make the world search explicit.\\n\\r\\\n\\n\\r\\\nThe next parameter is the search criteria.  \\\nThe key phrase WHEN= may optionally precede it to \\\nmake explicit that you are specifying the search criteria.  The search \\\ncriteria fields may be separated by && strings to specify that all of the \\\npreceding criteria AND the next single criteria must be true.  The criteria \\\nfields may also be separated by || strings to specify that all of the preceding \\\ncriteria OR the next single criteria may be true.  One of those strings must \\\nbe present when specifying more than one criteria.\\n\\r\\\n\\n\\r\\\nEach field in the search criteria must be of the form FIELD=VALUE, FIELD!=VALUE, \\\nFIELD$VALUE, FIELD>VALUE, FIELD<VALUE, FIELD>=VALUE, or FIELD<=VALUE.  Where \\\nFIELD must be a valid search field.  Enter GMODIFY ? for a complete list of all \\\nvalid fields.  Not all fields will apply to all object types, so take this into \\\naccount especially when using < or != operators.  The operators are all normal \\\nexcept for the new one, $, which means that the value is really a regular expression. \\\nThe VALUE portion of the criteria may be prefixed with modifiers, which include: \\n\\r\\\n[ss] to specify that the value refers to a substring of the fields whole value.\\n\\r\\\n[cs] to specify that the search is case sensitive (case insensitive is implied).\\n\\r\\\n\\n\\r\\\nThe last parameter is the optional change specifications.  These specifications \\\nmust be prefixed with the key phrase CHANGE=.  If these specifications are not \\\nincluded, GMODIFY will display the results of the search.  The change specifications \\\nare similar to the search criteria in that they consist of groupings of FIELD=VALUE \\\nseparated by && strings.  Unlike search criteria, however, operators other than =, and \\\nstrings other than || have no special meaning.  The fields, like in the search \\\ncriteria, must be valid fields for the options selected by the search criteria.  A \\\nspecial field name "DESTROY", when set to true, will \\\nobliterate the item in question.  Otherwise, the ordinary \\\nfields on the object will be changed to the specified value UNLESS the following \\\nconditions are met: the VALUE portion of a field is prefixed with the modifier [ss], \\\nand the VALUE portion of an identical field in the search criteria was also prefixed with \\\nthe modifier [ss].  Under those special conditions, instead of substituting the entire \\\nfield value on the object with the new value, ONLY the portion of the string selected \\\nin the search criteria will be substituted.\\n\\r\\\n\\n\\r\\\n* Be very careful with this command! It is wise to try the command WITHOUT change= ... \\\nfirst, to make sure you are matching Exactly what you expect, before doing a change pass.\n\nNOWIZINV=\\\nCommand  : WIZARD INVISIBILITY\\n\\r\\\nUsage    : VISIBLE\\n\\r\\\nExample  : visible\\n\\r\\\nShort(s) : nowizinv\\n\\r\\\nWizard Invisibility makes the invoker \\\ncompletely undetectable by other mobs or players.  This command \\\nturns wizard invisibility off.  See WIZINV for more information.\n\nCHARGEN=\\\nSkill    : CHARGEN\\n\\r\\\nUsage    : CHARGEN (COMBAT/NEW/PLAYER/EQUIP) (CHARCLASS/ALL) (LEVEL)\\n\\r\\\nExample  : chargen combat figher 10\\n\\r\\\nExample  : chargen equip bob\\n\\r\\\nExample  : chargen weapon ([ARG]=[VALUE] ...)\\n\\r\\\nShort(s) : \\n\\r\\\nA little utility designed to give example characters and weapons \\\nof various levels, for comparison with MOBs of similar \\\nlevel.  It\'s basically a class balancing tool.\n\nGOTO=\\\nSkill    : GOTO\\n\\r\\\nUsage    : GOTO [ROOM ID/DESC/MOB/AREA]/PREVIOUS (!)\\n\\r\\\nExample  : goto Midgaard#3001\\n\\r\\\nExample  : goto #3001\\n\\r\\\nExample  : goto north\\n\\r\\\nExample  : goto hassan\\n\\r\\\nExample  : goto temple of mota\\n\\r\\\nExample  : goto midgaard\\n\\r\\\nExample  : goto previous\\n\\r\\\nShort(s) : \\n\\r\\\nThe invoker and his or her followers will be transported, \\\nwith very little fanfare, to the destination listed.  This \\\nability is not magical in nature, and is thus not affected \\\nby no-teleport areas and rooms.  Appending an exclaimation \\\npoint to the room will ADD fanfare to the entrance.\n\nTRANSFER=\\\nSkill    : TRANSFER\\n\\r\\\nUsage    : TRANSFER [ALL/[MOB NAME]/"ITEMS X"] [ROOM/DESC/MOB/AREA/SRVR]\\n\\r\\\nUsage    : TRANSFER [SPACE OBJECT] SPACE:[COORDS]/[OBJ] ([DIST])\\n\\r\\\nExample  : transfer all Midgaard#3001\\n\\r\\\nExample  : transfer all midgaard\\n\\r\\\nExample  : transfer all north\\n\\r\\\nExample  : transfer bob #3001\\n\\r\\\nExample  : transfer smurf hassan\\n\\r\\\nExample  : transfer bobbyjoe temple of mota\\n\\r\\\nExample  : transfer "item sword" north\\n\\r\\\nExample  : transfer "all item sword" north\\n\\r\\\nExample  : transfer "all items" north\\n\\r\\\nExample  : transfer "item sword" midgaard#3001@user$password$server:port\\n\\r\\\nExample  : transfer "space ship galileo" space:100,-1000,10000\\n\\r\\\nExample  : transfer "space ship galileo" space:planet bob 10000km\\n\\r\\\nShort(s) : \\n\\r\\\nThe targets and their followers will be transported, \\\nwith very little fanfare, to the destination listed.  This \\\nability is not magical in nature, and is thus not affected \\\nby no-teleport areas and rooms.  If all or item is used, it will refer \\\nonly to those in the same room as the admin.  Otherwise, the \\\nadmins present area will be checked for all instances of the name \\\nand transfers all of them.  If none are found in the same area, the \\\nwhole world will be checked.  If the word items is used, then an item \\\ncan also be transported to a room destination, though the word INVENTORY \\\nis also a valid destination to move the item into your inventory.\n\nOUTFIT=\\\nCommand : OUTFIT\\n\\r\\\nUsage   : OUTFIT (([LEVEL]) [NAME])\\n\\r\\\nExample : outfit\\n\\r\\\nExample : outfit 15 bob\\n\\r\\\nExample : outfit bob\\n\\r\\\nShort(s): \\n\\r\\\nShould your character or the targeted character ever be without clothing or weapon (usually \\\ndue to death), this command will give your character some newbie \\\nequipment to get by with, or level appropriate equipment when a player or mob is targeted \\\nby name by the builder.  The mundane player version of this only gives level 1 equipment \\\nto the player using the command.\n\nWIZEMOTE=\\\nCommand : WIZEMOTE\\n\\r\\\nUsage   : WIZEMOTE [ALL/HERE/ROOM NAME/AREA NAME/CLAN NAME/PLAYER NAME] message\\n\\r\\\nExample : wizemote all You are having fun!\\n\\r\\\nExample : wizemote here We are having fun!\\n\\r\\\nExample : wizemote bob You are having more fun though.\\n\\r\\\nExample : wizemote "Death Area" Something bad happened here!\\n\\r\\\nExample : wizemote "Death Area#5320" Something bad happened there!\\n\\r\\\nExample : wizemote "The Artisans" Something bad happened to your clan!\\n\\r\\\nShort(s): \\n\\r\\\nBEHAVIOR_MAGENESS=\\\r\nBehavior   : Mageness\\n\\r\\\r\nTargets    : MOBs\\n\\r\\\r\nParameters : \\n\\r\\\r\nExample    : \\n\\r\\\r\nDescription: \\n\\r\\\r\nAn extension of CombatAbilities, this behavior makes the mob a Mage by class, \\\r\nand gives the mob mage spells appropriate to its level.  After \\\r\nShort(s) : \\n\\r\\\nThis command will allow your character to possess and control \\\nany given mob.  That mob will be controlled \\\nas if it were your own character.  Use the QUIT command to return \\\nto your own characters body.  Should the mob die, you will be \\\nreturned automatically.  POSSESS does not transfer your security \\\nlevels to the possessed mob UNLESS you have turned on your SYSMSGS \\\nflag before possessing.\n\t\nRESTRING=\\\nCommand : RESTRING\\n\\r\\\nUsage   : RESTRING [ITEM NAME]\\n\\r\\\nExample : restring longsword\\n\\r\\\nExample : restring "longsword@an orc"\\n\\r\\\nShort(s): \\n\\r\\\nThis command is a weak for of MODIFY.  It allows you to modify an items \\\nname, display text, and description.\n\nTASK=\\\nCommand : TASK\\n\\r\\\nUsage   : TASK [MESSAGE]/REVIEW (FILTER) (STARTING MSG)\\n\\r\\\nUsage   : TASK TRANSFER (FILTER) [MESSAGE NUMBER] [TARGET]\\n\\r\\\nExample : task nothing is spelled right in this room!\\n\\r\\\nExample : task review\\n\\r\\\nExample : task review 7\\n\\r\\\nExample : task review bob 7\\n\\r\\\nShort(s): \\n\\r\\\nThis command can be used to submit builder tasks to the system.  When \\\nthe REVIEW parameter is given, the tasks will be iterated through \\\none at a time to give the builder a chance to delete, comment on, \\\nor email each one.  An optional starting number can be given to REVIEW. \\\nAn optional filter can be given to list only messages assigned to a particular user. \\\nThe player must be either an Archon, or a player with the TASKS security \\\nstring to use this feature. \\\n\nTEMPLATE=\\\nCommand : TEMPLATE\\n\\r\\\nUsage   : TEMPLATE LIST (MOBS/ITEMS/EXITS/ROOMS) (MASK)\\n\\r\\\nUsage   : TEMPLATE TEMPLATE ADD [NEW ID] [mob/item name/exit direction/here or room id]\\n\\r\\\nUsage   : TEMPLATE DELETE [ID]\\n\\r\\\nUsage   : TEMPLATE TOGGLE [ID]\\n\\r\\\nExample : template list mobs myswords\\n\\r\\\nExample : template list\\n\\r\\\nExample : template add myroomid here\\n\\r\\\nExample : template add myswordid the greatest longsword ever\\n\\r\\\nExample : template delete myswordid\\n\\r\\\nShort(s): \\n\\r\\\nThe template command allows builders to maintain a personal favorites \\\ncollection of items, rooms, mobs, or exit objects for quick \\\nduplication using the create command.  Each object \\\nmust have a unique id, which is typically a short friendly word.  Objects \\\nin your templates can also be shared with other builders, and you will be \\\nable to access objects shared by others.  Sharing status is toggled using \\\nthe template toggle syntax.\n\nTRAILTO=\\\nCommand : TRAILTO\\n\\r\\\nUsage   : TRAILTO (CONFIRM) (AREANAMES) (IGNOREROOMS=[ROOMS LIST]) [AREA NAME] /[ROOM ID] /EVERYROOM /EVERYAREA\\n\\r\\\nExample : trailto MyArea#394\\n\\r\\\nExample : trailto everyarea\\n\\r\\\nExample : trailto confirm areanames "ignorerooms=myarea#10,myarea#20" everyarea\\n\\r\\\nShort(s): \\n\\r\\\nThis command shows the directions one must travel to get from their current \\\nposition to the destination given. You can end the areas with \'areanames\', \'ignorerooms=\', \\\nand \'confirm!\' flags.  You can also include one of these flags: NOHOMES, OPENONLY, \\\nUNLOCKEDONLY, AREAONLY, NOHIDDENAREAS, NOEMPTYGRIDS, NOAIR, NOWATER, WATERSURFACEONLY, \\\nUNDERWATERONLY, FLOORSONLY, CEILINGSSONLY, NOCLIMB, NOCRAWL, OUTDOORONLY, FALLBACK, \\\nRADIUS=X, or MINSIZE=X. MINSIZE will change the minimum area size for use with EVERYAREA, \\\nFALLBACK will remove flags in reverse order until a trail is found. RADIUS changes the \\\nwidth of the space to look for trails in.\n\nTYPO=\\\nCommand : TYPO\\n\\r\\\nUsage   : TYPO [MESSAGE]/REVIEW (STARTING MSG)\\n\\r\\\nExample : typo nothing is spelled right in this room!\\n\\r\\\nExample : typo review\\n\\r\\\nExample : typo review 7\\n\\r\\\nShort(s): \\n\\r\\\nThis command can be used to submit typos to the system.  When \\\nthe REVIEW parameter is given, the typos will be iterated through \\\none at a time to give the archon a chance to delete, comment on, \\\nor email each one.  An optional starting number can be given to REVIEW.\n\nSHELL=\\\nCommand : SHELL\\n\\r\\\nUsage   : SHELL [COMMAND] [PARAMETERS]\\n\\r\\\nExample : shell\\n\\r\\\nExample : shell ?\\n\\r\\\nExample : shell directory\\n\\r\\\nExample : shell cd /resources/text\\n\\r\\\nExample : shell copy thisfile.txt ::\\n\\r\\\nExample : shell del ::thisfile.txt\\n\\r\\\nExample : shell edit thisfile.txt\\n\\r\\\nShort(s): .\\n\\r\\\nThis command allows the archon, and users with appropriate FS: and/or VFS: security \\\nflags to access the file system and/or the virtual file system.  See help on CMFS \\\nor VFS for the difference between the two.\\n\\r\\\n\\n\\r\\\nThe commands are case-insensitive, except where dealing with the local file system, where \\\nit may be case-sensitive depending upon the host system.  As mentioned in the CMFS docs, \\\nfilenames and paths may be preceded by a :: string to denote forced VFS access, or // \\\nto denote forced local file-system access.  When neither is specified for a given \\\nshell command, the VFS file is always preferred. The / character is always used to separate \\\ndirectory paths and folders, such as /resources/text/down.txt would refer to the file \\\ndown.txt in the text folder, which in turn is in the resources folder, which in turn is \\\nlocated in the root directory.\\n\\r\\\n\\n\\r\\\nThe shell command may be entered with no parameter to see the players current directory. \\\nWhen viewing directories, a "-" character will precede a file which exists only in the \\\nVFS system.  A "+" character will precede a file which exists in both the local file \\\nsystem and the VFS system.  Since folders always exist in the VFS, they will always \\\nbe seen with the "+" character preceding them.\\n\\r\\\n\\n\\r\\\nThe shell command can be used to create directories, delete files or directories, \\\ncopy files, search for files with given names, search inside text files for a \\\ntext string, display a text file, or edit a text file.  Many commands support a \\\nmask to limit the files displayed. The mask may include "*" characters anywhere \\\nin the string to match 0 or more unknown characters in the filenames.  A "?" \\\ncharacter always matches a single unknown character in a filename. \\n\\r\\\n\\n\\r\\\nSee HELP CMFS for more information on CoffeeMuds file system.\n\nWHO=\\\nCommand : WHO\\n\\r\\\nUsage   : WHO ([OPTIONAL PARAMETER])\\n\\r\\\nExample : who\\n\\r\\\nExample : who @CoffeeMud\\n\\r\\\nExample : who friends\\n\\r\\\nExample : who account\\n\\r\\\nExample : who playerkill\\n\\r\\\nShort(s): \\n\\r\\\nThis command will list all of the characters presently online, \\\nregardless of where they are.  If \\\nan @ sign is used, this command will list all the players at a \\\nparticular MUD.  If "friends" is given, then the list will \\\nconsist only of those from the players friends list (see the \\\nFRIENDS command). If "Playerkill" is given, then the list will \\\nconsist only of those players who have their playerkill flags on. \\\nIf account is given, then a list of players with the account they \\\nbelong to is shown.\n\n\t\nWHERE=\\\nCommand : WHERE\\n\\r\\\nUsage   : WHERE (AREA) (ROOM/MOB/ITEM/MOBMASK/ITEMMASK) ([MASK])\\n\\r\\\nUsage   : WHERE (AREA) SELECT: [REST OF MQL STATEMENT]\\n\\r\\\nExample : where\\n\\r\\\nExample : where dog\\n\\r\\\nExample : where area item knife\\n\\r\\\nExample : where area mobmask -race +orc -levels +>=10\\n\\r\\\nExample: where area select: * from area\\mobs where \'farmer\' in name\\n\\r\\\nExample : where !\\n\\r\\\nShort(s): \\n\\r\\\nWithout an argument, this command displays the names and locations of \\\nall players online.  With the ROOM, MOB, ITEM, or no argument, it will show \\\nall mobs, rooms, and/or items the match the given key words in the mask, \\\nalong with room locations.  With the MOBMASK, ITEMMASK arguments, it will \\\nshow all mobs or items that match the given Zapper Mask (See ZAPPERMASKS). \\\nWith the SELECT: prefix, it will show the results of an MQL query (see \\\nAHELP MQL. The arguments may be qualified with AREA to show only the \\\nArchons current area. The argument ! will show the mundane/player \\\nversion of the WHERE command.\n\t\nWIZINVISIBLE=WIZINV\nWIZINV=\\\nSkill    : WIZARD INVISIBILITY\\n\\r\\\nUsage    : WIZINV (OFF/NOCLOAK)\\n\\r\\\nExample  : wizinv\\n\\r\\\nExample  : wizinv nocloak\\n\\r\\\nShort(s) : \\n\\r\\\nWizard Invisibility makes the invoker \\\ncompletely undetectable by other mobs or players.  In addition, \\\nthe invoker will not hunger or thirst, may pass through any \\\nterrain unhindered (except doors), and is invulnerable to sleep \\\nspells.  Lastly, unless the nocloak parameter is specified, the \\\nArchon is completely cloaked as per the CLOAK command.\n\nXML=\\\nCommand  : \\n\\r\\\nUsage    : By MUDGrinder only\\n\\r\\\nExample  : \\n\\r\\\nShort(s) : \\n\\r\\\nThis command exist to facilitate the transfer of information \\\nbetween MUDGrinder and CoffeeMud.  Do not use this command for \\\nany reason.\n\nUNLOAD=\\\nCommand  : UNLOAD\\n\\r\\\nUsage    : UNLOAD CLASS/HELP/USER/AREA/FACTION/ALL/FILE\\n\\r\\\nUsage    : UNLOAD RESOURCE/INIFILE/ACHIEVEMENTS/[FILENAME]\\n\\r\\\nUsage    : UNLOAD VFS/[RESOURCE NAME]\\n\\r\\\nExample  : unload help\\n\\r\\\nExample  : unload all\\n\\r\\\nExample  : unload armorsmith\\n\\r\\\nExample  : unload class Thief_Search\\n\\r\\\nExample  : unload user joe\\n\\r\\\nShort(s) : \\n\\r\\\nUnloads most resource text, cached users, class objects, \\\nareas, coffeemud.ini, lists.ini, library caches, and \\\nhelp files for easy refreshing. \n\nDUMPFILE=\\\nCommand  : DUMPFILE\\n\\r\\\nUsage    : DUMPFILE (RAW) [USER/ALL] [FILENAME]\\n\\r\\\nExample  : dumpfile all classes.txt\\n\\r\\\nShort(s) : \\n\\r\\\nUnloads most resource text and help files for easy refreshing.\n\nJRUN=\\\nCommand  : JRUN\\n\\r\\\nUsage    : JRUN [FILENAME] [PARM1] ... \\n\\r\\\nExample  : jrun resources/myscript.js parm1 parm2\\n\\r\\\nShort(s) : \\n\\r\\\nRuns the given file as Javascript.  See the Programming Guide for more information \\\non how to write Javascript for CoffeeMud.\n\nMPRUN=\\\nCommand  : MPRUN\\n\\r\\\nUsage    : MPRUN ([USER]:[PASS]) [SCRIPT]\\n\\r\\\nExample  : mprun once_prog;mpecho hello!;~;\\n\\r\\\nExample  : mprun load=mine.script\\n\\r\\\nExample  : mprun archons:password once_prog;mpecho hello!;~;\\n\\r\\\nShort(s) : \\n\\r\\\nRuns the given script as per the Scriptable behavor.  Since Scriptable scripts are \\\nevent-triggered, any commands executed must be in a ONCE_PROG trigger (or perhaps \\\na RAND_PROG).\\n\\r\\\n\\n\\r\\\nFor use as part of automated testing, MPRUN can also be executed by unauthorized users \\\nso long as they know the username and password of an authorized user.  Any failed attempts \\\nto use this command will cause the user to be marked as unable to use this command for \\\ntwo minutes.\n\nTEST=\\\nCommand  : TEST\\n\\r\\\nUsage    : TEST ALL/[TEST NAME]\\n\\r\\\nExample  : test all\\n\\r\\\nShort(s) : \\n\\r\\\nRuns a series of internal tests.  This command is only for code developers, and takes a lot \\\nof time and resources to complete, so use it only if you know why you are doing it.\n\nWIZINFO=\\\nCommand : WIZINFO\\n\\r\\\nShort(s): \\n\\r\\\nThe automatic information channel available to admins and \\\narea admins. Turned off with NOWIZINFO\n\nNOWIZINFO=\\\nCommand : NOWIZINFO\\n\\r\\\nUsage   : NOWIZINFO\\n\\r\\\nExample : nowizinfo\\n\\r\\\nShort(s): \\n\\r\\\nTurn off the automatic information channel available to admins and \\\narea admins. \n\nMASKS=\\\nIn numerous parameters, places, and input fields, CoffeeMud will ask you for something \\\ncalled a "Zapper Mask".  The mask is used to help select particular mobs, items, etc \\\nfrom the universe of available selections by "filtering out" those you don\'t want. \\\nFor example, if you wanted to only select mobs named Bob, you would compose a mask \\\nthat Disallows non-mobs, and Disallows things that dont have the name Bob.  This is \\\ndone using the Zapper Mask syntax, shown below:\\n\\r\\\n<ZAP=disallow>\n\nZAPPER_MASKS=MASKS\n\nABILITY_PREREQS=\\\nAbility Prerequisites is a comma delimited list of skills or skill masks that describe \\\nwhat skills or set of skills must be learned, and at what optional proficiency, before \\\na player of a given class can learn that skill.  The list is comma delimited, and each \\\nitem in the list consists of a valid Ability ID (like Spell_Fireball), or a wildcard \\\nmask of Ability_IDs (like Spell_F* to select all Ability IDs beginning with Spell_F). \\\nFollowing the Ability_ID is an optionally number in parenthesis, which would represent \\\nthe minimum proficiency of the aforementioned Ability that is required.\\n\\r\\\nExample:\\n\\r\\\nSkill_Trip(50),Fighter_*(10)\\n\\r\\\nThe above means that the current ability requires that the player have Trip at 50% \\\nproficiency and any Fighter skill at 10% proficiency or better.\n\nNEWS=The channel where logon news is shown.  Try LIST NEWS and MODIFY NEWS.\n\nABILITY_SECRET=\\\nAbility secret status is a flag with three states: Public means that characters know \\\nabout the ability, and teachers will normally teach it.  Secret means that characters and \\\nteachers will not know about the ability, which means a scroll or other means is required. \\\nMasked means the ability is secret except when the Ability mask criteria are met.\nBEHAVIOR_THIEFNESS=\\\r\nBehavior   : Thiefness\\n\\r\\\r\nTargets    : MOBs\\n\\r\\\r\nParameters : \\n\\r\\\r\nExample    : \\n\\r\\\r\nDescription: \\n\\r\\\r\nAn extension of CombatAbilities, this behavior makes the mob a Thief by class, \\\r\nand gives the mob thief skills appropriate to its level.  After \\\r\n', 'message': '\n\ngit-svn-id: svn://192.168.1.10/public/CoffeeMud@2174 0d6f1817-ed0e-0410-87c9-987e46238f29\n', 'author_name': 'bozimmerman', 'lang': 'ini'}