TinyMAZE/
TinyMAZE/config/
TinyMAZE/doc/
TinyMAZE/run/msgs/
TinyMAZE/src/
TinyMAZE/src/db/
TinyMAZE/src/ident/
TinyMAZE/src/io/
TinyMAZE/src/prog/
TinyMAZE/src/softcode/
TinyMAZE/src/util/
& help
|+W|========================================================================
|+G|         M A Z E   O n l i n e   H e l p   F a c i l i t y
|+W|------------------------------------------------------------------------

|+W|Help is available for the following areas:
|+Y|     topic           |+B|General topics
|+Y|     command         |+B|Normal commands
|+Y|     function        |+B|Built-in functions
|+Y|     flag            |+B|Built-in flags

|+W|To get a listing of topics relating to any of the above items simply
|+W|type 'help type=|+Y|<|+B|item|+Y|>'.

|+W|You may type '|+G|help syntax|+W|' to find out how to make sense of the
|+W|command syntaxes shown throughout the help text.

|+W|To get help on something specific type 'help |+Y|<|+B|item|+Y|>|+W|'.

|+R|Please notify an overlord if any errors are found in the help text.
|+W|------------------------------------------------------------------------

& syntax
type:topic
|+W|Notes on help descriptions:
  |+W|[|+B|option|+W|]     - |+B|Text enclosed in |+W|[]|+B|'s is
|+B|                 optional. The |+W|[]|+B|'s are never typed in
|+B|                 as part of the command.

  |+Y|<|+B|parameter|+Y|>  |+W|- |+B|Information about what you should type.
|+B|                 The |+W|<>|+B|'s are never typed in as part of the
|+B|                 command.

|+G|For example, here is the syntax of the help command|+W|:
|+W|  help |+W|[|+Y|<|+B|topic|+Y|>|+W|]
|+G|Meaning that |+B|topic |+G|is optional but if you do specify it,
|+B|topic |+G|shouldn't be typed literally.

|+M|Example|+W|:  |M|Type |+W|help look |M|for help about the look command,
|M|          and type |+W|help |M|for general help information.

& topic
|+B|To get a list of topics type|+W|: |+Y|help type|+W|=|+Y|topic

& class descriptions
type:topic
|+G|                       Class Descriptions
|+W|                      --------------------

|C|  You will have three main classes of players to choose from: Magic-Users,
|C|Fighters, and Thieves |+W|(|C|Each class having advantages and disadvantages|+W|)|C|.
|C|The classes are broken down into levels. These levels are gained with
|C|knowledge and virtue. The levels that you attain in your class are
|C|determined by the way you play. NOTHING in this game is pre-set, the
|C|outcome is entirely up to you. Every class has a maximum level that can be
|C|obtained, and if you are very disciplined there are three special |+W|(|C|*|+W|)|C|
|C|levels that are available. Your class will determine what you can use,
|C|learn, sell in shops, and purchase.

|C|  Magic-Users will be the toughest to start with but can become VERY
|C|powerful later in the game. Fighters are easier to begin with but are
|C|limited in what they can accomplish alone. Thieves are in the middle for
|C|playing ability but a difficult class to role-play. Role-playing is an
|C|important factor in achieving high levels.

|+G|                      Class Level Progressions
|+W|                     --------------------------

|+M|Following is the break-down of the classes:

|G|LINE  CLASS       LEVEL PROGRESSION

 1)                     |+B|    Mage |+W|-> |+B|Black Wizard |+W|-> |+B|Sorcerer
 2) |+Y|Magic-User: |+B|Apprentice |+W|<
 3)                         |+B|Cleric |+W|---------> |+B|White Wizard
 4)                                                       |+W| \
 5)                                                        |M|  Paladin|+W|*
 6)                                                      |+W|  /
 7)                          |+B|Fighter |+W|------------> |+B|Warrior
 8) |+Y|Fighter   : |+B|Squire |+W|-----<                              \
 9)                          |+B|Archer |+W|-----> |+B|Master Archer |+W|   \
10)                           |M|                               Pirate|+W|*
11)                                          |+W|               /
12)                                              |+W|          /
13)                 |+B|         Bandit |+W|---------------> |+B|Thief
14) |+Y|Thief     : |+B|Rogue |+W|------<
15)                |+B|          Crook
16)                    |+W|           \
17)                        |M|        Bard|+W|*
18)                        |+W|       /
 1)                   |+B|       Mage |+W|---> |+B|Black Wizard |+W|-> |+B|Sorcerer
 2) |+Y|Magic-User: |+B|Apprentice |+W|<
 3)                          |+B|Cleric |+W|---------> |+B|White Wizard

|+W|* |C|These levels require very disciplined role-playing. You have one chance
|C|to play this class level. If you fail to maintain your virtue or your
|C|fame, you will be declassed and not allowed to achieve that status again.
|C|Once you obtain one of these levels, you gain the abilities of both
|C|classes it branches from.

|C|To achieve the level of Paladin, you must currently be either a White
|C|Wizard or a Warrior |+W|(|C|Both requring perfect virtue, which is not as easy
|C|as it sounds|+W|)|C|.

|C|To achieve the level of Pirate, you must currently be either a Thief or a
|C|Warrior |+W|(|C|Both requiring a certain level of negative virtue and high fame|+W|)|C|.

|C|To achieve the level of Bard, you must currently be either a Crook or a
|C|Mage |+W|(|C|Both requiring a certain level of negative virtue and low fame|+W|)|C|. A
|C|Bard is the only class level that can effectively fight and use black
|C|magic.

|+G|                          Hints and Tips
|+W|                         ----------------

|C|Again, we would like to stress that every character is different. If you
|C|play to make your own way at the expense of others, your character will
|C|reflect that. This is DEFINITELY not a 'bad' player. Some characters
|C|require that type of role-playing |+W|(|C|i.e. Thief|+W|)|C|. The only way a Pirate can
|C|make a living is by stealing from other players and marauding their ships.
|C|On the other hand, a Paladin may only live a 'good' life. Do not expect to
|C|be able to remain a Cleric if you play your character like a Thief. No
|C|single character is better or has an advantage. It is completely up to
|C|you on what your character accomplishes.

|C|Our advice to you is choose a class that best fits how you would like to
|C|play this game.

|+M|SEE ALSO|+W|: |M|Shop Ownership|+W|, |M|Partying

& potions
type:topic
|C|  Potions are made from herbs, each having a different effect on the user.
|C|Only black magic users have the ability to brew potions. However, anyone
|C|can sell potions if they own a shop.

|+G|                            How it Works
|+W|                           --------------

|C|  Herbs are scattered throughout the world. You can collect them by
|C|'picking' them when you find them. Each potion has a 'recipe' of herbs 
|C|needed. Then they must be taken to a black magic user|+W|*|C|, who will
|C|brew specified potion. You will then pay the magic user whatever price
|C|they ask |+W|(|C|Open Market Economy|+W|)|C| and in turn, you will receive
|C|your potion and you may do with it as you wish. You may use the potion,
|C|sell it |+W|(|C|if you own a shop|+W|)|C|, or give it to a friend.

|+W|* |+B|To know which herbs to use to make a given potion, there is a
|+B|Potion Book available for purchase in the warehouse.

|+M|SEE ALSO|+W|: |M|Shop Ownership

& fame
type:topic
|C|  Fame is an attribute that determines how well known you are. It can be
|C|increased through good and bad deeds done by your character. For example|+W|:
|C|A woman may ask you to bring her a specific item. By doing so, your fame
|C|will increase. |+W|(|C|A quest such as that may also change your virtue|+W|)|C|.
|C|Your fame would also increase for killing someone or, if you are a thief,
|C|for stealing.

|+M|SEE ALSO|+W|: |M|Virtue

& herbs
type:topic
|C|  Herbs are used to create potions. They are found throughout the game.
|C|Herbs are listed in the room's contents. You may obtain these herbs by
|C|using the |+B|pick |C|command.

|C|  Each herb has a growing season. Not all herbs are available year round.

|+M|SEE ALSO|+W|: |M|Potions|+W|, |M|Pick|+W|, |M|+herb

& economic system
type:topic
|C|  MedievalMAZE is based on an open market economy. EVERY player has an equal
|C|opportunity to make money. Anyone is able to open up their own shop,
|C|purchase items from the warehouse |+W|(|C|prices do not fluctuate here|+W|)|C|, and
|C|then sell the items for whatever price they wish.

|C|Another way to make money is to utilize a trade route. All islands will
|C|have certain items they import and export. You can take an export from one
|C|island |+W|(|C|i.e. Pearls|+W|)|C| and sell them for a profit on another island. Due to
|C|the open market system, these routes do not prove profitable forever. As
|C|you take the export from one island, the demand increases on that island,
|C|making the export more expensive to buy, therefore, you make a smaller
|C|profit when you sell it. No player can own a trade shop |+W|(|C|to keep the trade
|C|routes regulated|+W|)|C|, and no 'trade items' may be sold in shops owned by
|C|players.

|+M|SEE ALSO|+W|: |M|Shop Ownership

& shop ownership
type:topic
|+G|                            Types of Shops
|+W|                           ----------------

|C|  There are two types of shops in MedievalMAZE. One type of shop is a trade
|C|shop |+W|(|C|See 'Economic System'|+W|)|C|. The other is a shop owned by an ordinary
|C|player.

|+G|                          How do I Get a Shop?
|+W|                         ----------------------

|+M|There are two ways to get a shop:

1) |+B|Find a shop 'for sale' and purchase it from the owner.
2) |+B|Find a plot of land 'for sale', purchase it from the owner, and build a
   |+B|shop on that land.

|+G|                       What Can I Sell in my Shop?
|+W|                      -----------------------------

|C|  Your class and class level determine what you can sell in your shop. You
|C|can sell anything you can use. All items originate from the warehouse, but
|C|that doesn't mean you can ONLY buy items for your shop from there.
|C|Basically, if you have an item you can use |+W|(|C|regardless of origin|+W|)|C|, you
|C|can sell it in your shop.

|+G|                       Why Does my Shop Close?
|+W|                      -------------------------

|C|  Every shop has a lock on the front door. And every one of those locks has
|C|a key. If the player holding that key disconnects from the game, the shop
|C|will automatically close up. Your shop must remain open to sell items from
|C|it. That is why you may consider hiring an employee to watch your shop
|C|while you're not there. Because of the open market system YOU decide what
|C|wages you pay your employees. Make sure you leave the key to your shop
|C|with someone trustworthy |+W|(|C|I wouldn't leave my key with a Thief for
|C|instance|+W|)|C|. Also, don't leave your shop unattended for too long. You
|C|run the chance of someone stealing something you value. Remember, thieves
|C|are NEVER to be trusted. If one enters your shop when you are there, you
|C|can use the 'shoo' command.

|+G|                      How do I Sell my Shop?
|+W|                     ------------------------

|+M|If, for any reason, you wish to sell your shop you must:

1) |+B|Sell all items in your shop. You can accomplish this by selling your
   |+B|items to the warehouse |+W|(|+B|chances are, you'll take a loss|+W|)|+B| or by selling
   |+B|your items to other players |+W|(|+B|A sale might be a good idea|+W|)|+B|.
2) |+B|'Price' your shop for the amount you want to sell it for.
3) |+B|Wait for someone to buy it.

|+M|SEE ALSO|+W|: |M|Price Command|+W|, |M|Thieves|+W|, |M|Shoo Command|+W|, |M|Land

& houses
type:topic
|C|  In MedievalMAZE, it is important to have a safe place to store valuables
|C|and money. Your character can only carry so much weight and if you carry all
|C|your money around, you run the risk of being ambushed and having it stolen. A
|C|good place to keep these things is in your house.

|+M|In order to build a house you must either:

1) |+B|Own the land on which you wish to build.
2) |+B|Have permission from another land owner to build it on their property.

|+M|SEE ALSO|+W|: |M|Taxes|+W|, |M|Weight

& taxes
type:topic
|+G|                           Property Tax
|+W|                          --------------

|C|  Owning land is not free. The 'goverment' will charge a property tax
|C|quarterly. The amount of the tax is directly proportional to the amount of
|C|land you own and the 'value' of the land. On some islands the property is
|C|much more expensive to purchase due to location, therefore, the property
|C|tax will be higher.

|+G|                          Building Tax
|+W|                         --------------

|C|  The owners of shops and houses will also be taxed. It is important to note
|C|that if you are 'renting' you need not worry about this. Only the OWNERS
|C|will be charged the tax. This tax is a constant for ALL buildings. It will
|C|only multiply if you own more than one building. If you own a shop and a
|C|house you will be charged for both.

|+M|SEE ALSO|+W|: |M|Houses|+W|, |M|Shop Ownership

& land
type:topic
|+G|                              Buying Land
|+W|                             -------------

|C|  There is land available for purchace throughout the world. It is available
|C|to any class of player that has enough money to purchase it. You will notice
|C|that the land is devoid of description containing only the words 'For Sale'
|C|and the name of the person to contact. Once you have purchased the property,
|C|it is up to you to describe it. You may also build anything you wish on your
|C|property |+W|(|C|i.e. Your house|+W|)|C|. The property is yours which means
|C|you may do with it as you wish. If you want to sell pieces of it you may|+W|*|C|. If
|C|you want to let a friend use part of it you can. It is entirely up to you.

|C|  Another option you have is buying land, building a shop on it, and then
|C|'renting' out the shop to a player that can't afford to purchase one. This
|C|could prove beneficial for both parties.

|+W|* |+B|If you wish to divide land you own, you will need the assistance of
|+B| an admin.

|+G|                              Selling Land
|+W|                             --------------

|C|  You may sell your property and anything on it at any time and for any
|C|reason. The only exceptions are shops. You must first sell EVERYTHING in
|C|your shop before you can sell the property. This is because you cannot sell
|C|the land without selling the shop as well |+W|(|C|Unless the two parties have come
|C|to some sort of agreement. An example might be if you want to get rid of the
|C|land but wish to continue your shop ownership, therefore, instead of paying
|C|land taxes you would pay 'rent' to the new land owner which might be cheaper|+W|).

|+M|SEE ALSO|+W|: |M|Taxes|+W|, |M|Shop Ownership

& partying
type:topic
|+G|                             Why Party?
|+W|                            ------------

|C|  In this game it is very important to rely on other players. MedievalMAZE
|C|was designed to make this a necessary part of the game. It has been
|C|incorporated into the game design so that no single class of character can
|C|complete all their tasks alone. As you become a higher class level you will
|C|discover that your ability to do things on your own increases. It will be
|C|necessary throughout the game to have all or one of the other classes with
|C|you to complete certain tasks.  We strongly encourage players to explore
|C|together and utilize the positive attributes of the other classes.

|C|  It is important to understand that the main goal of this game is class
|C|specific. Fighters fight, magic-users use magic, and thieves steal. The main
|C|purpose of partying is accomplishing tasks in general. The fighting part of
|C|partying is designed for fighters, however, other parts of the game are
|C|designed for the other classes.

|M||+M|Example|+W|: |M|Bork the fighter needs to retrieve a sword that is locked away.
|M|         He must bring a thief to pick the lock or a wizard capable of
|M|         'casting' a spell to open the lock. The thief or wizard is
|M|         dependant on the fighter to get them there, and the fighter is
|M|         dependant on them to open the lock. The fighter will gain knowledge
|M|         for fighting their way there, and the wizard or thief will gain
|M|         knowledge for using their skills in opening the lock.

|+G|                     Gaining Knowledge in Parties
|+W|                    ------------------------------

|C|  Because MedievalMAZE is not only focused on combat you do not receive
|C|experience and gold for fighting. Instead, you receive knowledge. Being in a
|C|party does not effect the way you gain knowledge.

|+G|                            Hints and Tips
|+W|                           ----------------

|C|  For the times when you are 'alone' on the game and you need to complete a
|C|task that requires another player, we have implemented 'Companions'.

|+M|SEE ALSO|+W|: |M|Companions|+W|, |M|Knowledge|+W|, |M|Class Descriptions

& knowledge
type:topic
|C|  Knowledge is what defines the abilities of your character. There are
|C|several different areas in which you can gain knowledge. Each class can
|C|only gain knowledge in certain areas.

& weight
type:topic
|C|   Each class will have a set weight limit. Armor, weapons, money and
|C|all items will have a weight assigned to them. You may not carry more 
|C|than your weight allowance. A fighter will have a higher weight
|C|allowance,than a thief or magic-user. The items that each class needs
|C|to carry will be weighted appropriately. (i.e. A fighter's armor will
|C|be much heavier than a mage's robe.)

& thieves
type:topic
|+G|                              Skills
|+W|                             --------

|C|  The thief is a very difficult character to role-play. The idea is to
be able to use your thieving skills to make a living in MedievalMAZE.

& spells
type:topic
|+G|                            Spell Types
|+W|                           -------------

|C|  Spells can be broken up into three seperate categories. Black spells,
|C|white spells, and grey spells. Black spells may only be used by players
|C|with negative virtue. White spells may only be used by players with
|C|positive virtue. Grey spells may be used by any magic user.

|C|  Spells are gained as you gain knowledge. A sorcerer will know many more
|+W|(|C|not to mention stronger|+W|) |C|spells than an apprentice.

|+G|                            Spell List
|+W|                           ------------

|C|  Here is a rough list of the spells available on MedievalMAZE. This is
|C|only a beginning list and should not be considered as the final draft by
|C|any means.

|C|  Any references to 'player' in the following text refers to the magic
|C|user that cast the spell. Any references to 'target' means the object on
|C|which the spell is cast.

|+Y|White spells|+W|:

|+W|Antidote
|C|  Removes poison from target.

|+W|Blur
|C|  Decreases target's chance of being hit if attacked.

|+W|Guard
|C|  Player takes damage instead of target.

|+W|Heal
|C|  Target regains hitpoints |+W|(|C|Has no effect on dead targets|+W|)|C|.

|+W|Life
|C|  Brings target back to life.

|+W|Protect
|C|  Creates a wall, decreasing physical damage inflicted on target.

|+W|Reflect
|C|  Causes any spells cast on target to bounce off and hit caster instead.

|+W|Regenerate
|C|  Target slowly regains hitpoints.

|+W|Sacrifice
|C|  Player dies to completely refill party members' hitpoints.

|+W|Shield
|C|  Creates a wall, decreasing magical damage inflicted on target.

|+Y|Black Spells|+W|:

|+N|Abyss
|C|  Causes instant death to target.

|+N|Acid Rain
|C|  Causes minimal damage to target. Also has chance of poisoning.

|+N|Bolt
|C|  Causes damage to target. Incapacitates target for N seconds.

|+N|Confuse
|C|  Hinders target's ability to hit in a fight.

|+N|Comet
|C|  Causes damage to all objects in room.

|+N|Drain
|C|  Takes hitpoints from target and gives them to player.

|+N|Flare
|C|  Causes damage to target.

|+N|Poison
|C|  Poisons target.

|+N|Tornado
|C|  Causes damage to target. Chance of causing confusion.

|+N|Tsunami
|C|  Causes high level of damage to target.

|+Y|Grey spells|+W|:

Call
|C|  Summons various creatures.

Haste
|C|  Increases target's speed.

Illuminate
|C|  Casts an aura of light around target.

Scan
|C|  Allows player to see target's stats.

Sleep
|C|  Puts target to sleep.

Slow
|C|  Decreases target's speed.

Teleport
|C|  Allows player to move instantly to another designated position.

Unlock
|C|  Unlocks target.
& +com
type:command
|+M|SYNTAX|+W|: +com |+Y|<|+B|channel|+Y|>|+W|=|+Y|<|+B|message|+Y|>

|C|  The +com command sends your message to everyone that's on the channel
|C|you specify. |+Y|<|+B|message|+Y|> |C|may also be one of the following
|C|commands:

|+Y|  who |+W|- |+B|List everyone on the channel.
|+Y|  off |+W|- |+B|Turn the channel off. If a channel is off you will not
        |+B|see any activity on the channel.

|+M|There are a couple of shortcuts to the +com command:

1) |+B|You can use the '=' to talk over your default channel.
2) |+B|You can use the channel name or alias as a command. |+W|(|+B|i.e. public Hi!|+W|)

|+M|SEE ALSO|+W|: |M|+channel

& drop 
type:command
|+M|SYNTAX|+W|: |+W|drop |+Y|<|+B|object|+Y|>

|C|When you drop an |+B|object|C| the object leaves your inventory and is included
|C|with the contents of your current location. You may only drop objects in a
|C|room that you control.

|+R|Triggers|+W|: |R|Drop|+W|, |R|PDrop|+W|, |R|Leave|+W|, |R|PLeave

& enter
type:command
|+M|SYNTAX|+W|: |+W|enter |+Y|<|+B|object|+Y|>

|C|When you enter an |+B|object|C| you leave the room you are currently in and
|C|move to the contents of |+B|object|C|. You may only enter things you control.

|+R|Triggers|+W|: |R|Enter|+W|, |R|PEnter|+W|, |R|Leave|+W|, |R|PLeave

|+M|See Also|+W|: |M|leave

& moon
type:topic

                            |+G|MOON PHASES
                           |+W|-------------

|+B|New Moon|+W|:|C|        The new moon lies between the earth and the sun. Because the
|C|                 sunlit side is away from the earth, the new moon is invisible
|C|                 to us.

|+B|Waxing Crescent|+W|:|C| As the moon moves along its orbit, it appears as a crescent on
|C|                 the right side. As the visible part of the moon grows, it is
|C|                 said to be "waxing".

|+B|First Quarter|+W|:|C|   The moon has now completed a quarter of its orbit and appears
|C|                 to us as a half circle.

|+B|Waxing Gibbous|+W|:|C|  When more than half of the sunlit side is visible, the moon is
|C|                 "gibbous".

|+B|Full Moon|+W|:|C|       The moon reaches the second quarter of its orbit. The entire
|C|                 daylight side is visible and appears to us as a circle.

|+B|Waning Gibbous|+W|:|C|  As the sunlit side of the moon turns away from us, the moon
|C|                 begins to "wane".

|+B|Last Quarter|+W|:|C|    The moon reaches the third quarter of its orbit and appears as
|C|                 a backwards "D".

|+B|Waning Crescent|+W|:|C| The visible portion of the moon dwindles to a crescent and we
|C|                 get ready to start all over again.

|+M|SEE ALSO|+W|: |M|herbs

& pick
type:command
|+M|SYNTAX|+W|: pick |+W|[|+Y|<|+B|herb name|+Y|>|+W|]

|C|  The pick command allows you to obtain herbs you find throughout the game.
|C|If there is only one type of herb in the room with you, you don't need to
|C|specify what you want to pick. However, if more than one herb is in the room,
|C|the game will tell you that you must specify which herb to pick.

|C|  You can get a list of the herbs you are currently carrying with the |+B|+herb
|C|command.

|+M|SEE ALSO|+W|: |M|+herb|+W|, |M|Herbs

& examine
type:command
|+M|SYNTAX|+W|: examine |+Y|<|+B|object|+Y|>|+W|[|+C|/|+Y|<|+B|attribute|+Y|>|+W|]

|C|Displays all available information about |+B|object|C|. You must control the
|C||+B|object|C| to examine it fully unless it is set |+M|VISIBLE|C|.

|C|If |+B|attribute|C| is given, only that attribute of |+B|object|C| will be displayed.

& get
type:command
|+M|SYNTAX|+W|: get |+Y|<|+B|object|+Y|>

|C|Picks up |+B|object|C| from the room you're in.

|+R|LOCKS|+W|: |R|lock
|+M|SEE ALSO|+W|: |M|Locks

& give
type:command
|+M|SYNTAX|+W|: give |+Y|<|+B|target|+Y|>|+W|=|+Y|<|+B|thing|+Y|>
|+W|        give |+Y|<|+B|player|+Y|>|+W|=|+Y|<|+B|amount|+Y|>

|C|Gives |+B|thing |C|to |+B|target|C|.

|C|Gives |+B|player |C|the specified |+B|amount |C|of Lupas.

& gripe
type:command
|+M|SYNTAX|+W|: gripe |+Y|<|+B|complaint|+Y|>

|C|This commands logs |+B|complaint|C|. Administration will get back to you ASAP.

& home
type:command
|+M|SYNTAX|+W|: home

|C|This command will send you to your home. Your home is set by using the 
|C|'save' command.

|+M|SEE ALSO|+W|: |M|save

& inventory
type:command
|+M|SYNTAX|+W|: inventory [|+Y|<|+B|target|+Y|>|+W|]

|C|Lists what |+B|target |C|is carrying. |+B|Target |C|defaults to the player using the
|C|command if not specified.

& leave
type:command
|+M|SYNTAX|+W|: leave

Moves your from your current location to your location's location.

|+R|LOCKS|+W|: |+R|lleave

|+M|SEE ALSO|+W|: enter

& look
type:command
|+M|SYNTAX|+W|: look [|+Y|<|+B|object|+Y|>|+W|]

|C|Displays the name, caption, and description of |+B|object|C|. You will also
|C|see a list of contents and exits in the |+B|object|C|. If |+B|object|C| is not
|C|specified, you will look at the room you're in.

& money
type:command
|+M|SYNTAX|+W|: money [|+Y|<|+B|object|+Y|>|+W|]

|C|Displays how much money |+B|object |C|has onhand. |+B|Object |C|defaults to the
|C|player if left undefined.

& news
type:command
|+M|SYNTAX|+W|: news [|+Y|<|+B|topic|+Y|>|+W|]

|C|Shows you the current news for MedievalMAZE. It is highly recommended that
|C|you check the news regularly for new information. If |+B|topic |C|is not
|C|specified you will get a list of news topics.

& page
type:command
|+M|SYNTAX|+W|: page [|+Y|<|+B|player list|+Y|>|+W|=]|+Y|<|+B|message|+Y|>

|C|This command sends every player in |+B|player list |C|your |+B|message |C|. |+B|Player list
|C|is a list of players seperated by spaces. |+B|Player |C|list may be omitted if
|C|you have used the page command since the last reboot of the game. If it is
|C|omitted, the list given the last time you used the command will be used.

|+G|EXAMPLES|+W|:
  |G|page Saruk Coke=:waves.
  |G|You paged Saruk with: itsme waves.
  |G|You paged Coke with: itsme waves.
  |G|page How are you?
  |G|You paged Saruk with: How are you?
  |G|You paged Coke with: How are you?
  |G|page Augestflex=Hey!
  |G|You paged Augestflex with: Hey!

|+R|LOCKS|+W|: |R|lpage

& say
type:command
|+M|SYNTAX|+W|: say |+Y|<|+B|message|+Y|>

|C|Says |+B|message|+C| out loud to everyone in the room. You may abbreviate
|C|this command by using the '"' symbol.

|+G|EXAMPLE|+W|:
  |G|say My pancreas hurts.

  |+W|You see:
    |G|You say, "My pancreas hurts."
  |+W|Everyone else sees:
    |G|itsme says, "My pancreas hurts."

|+M|SEE ALSO|+W|: |M|pose|+W|, |M|poss

& pose
type:command
|+M|SYNTAX|+W|: pose |+Y|<|+B|message|+Y|>

|C|Displays your name followed by |+B|message |C|to everyone the room. You may
|C|abbreviate this command by using the ':' symbol.

|+G|EXAMPLE|+W|:
  |G|:waves.
  |G|itsme waves.

|+M|SEE ALSO|+W|: |M|poss|+W|, |M|say

&poss
type:command
|+M|SYNTAX|+W|: poss |+Y|<|+B|message|+Y|>

|C|This command acts like the 'poss' command, but making the |+B|message
|C|possessive. You may abbreviate this command by using the ';' symbol.

|+G|EXAMPLE|+W|:
  |G|poss pancreas hurts.
  |G|itsme's pancreas hurts.

|+M|SEE ALSO|+W|: |M|pose|+W|, |M|say

& QUIT    
type:command
|+M|SYNTAX|+W|: QUIT

|C|Log out and leave MedievalMAZE. Must be in all capitals.  

& who
type:command
|+M|SYNTAX|+W|: who [|+Y|<|+B|flags|+Y|>|+W|][=|+Y|<|+B|player list|+Y|>|+W|]

|C|Lists everyone connected to the game. By default, you will see the player's
|C|name, alias, idle time, connected time, and doing message. This output may
|C|be modified by specifying |+B|flags|C|. You may also change the default by
|C|setting your |+M|WhoFlags|C| attribute to the default flags you want.

|+B|Player list |C|is a list of players seperated by spaces. If |+B|player list |C|is
|C|given, only information on those players will be listed.

|+B|Here is a list of valid flags|+W|:
  |+G|N         |G|Name
  |+G|A         |G|Alias
  |+G|C         |G|Class
  |+G|I         |G|Idle
  |+G|O         |G|OnFor
  |+G|D         |G|Doing
  |+G|F         |G|Flags
  |+G|H         |G|Host
  |+G|X         |G|Concid
  |+G|P         |G|Port
  |+G|E         |G|Email

|C|NOTE: More space is reserved for each field by capitalizing the flag.

|+M|ATTRIBUTES|+W|: |M|whoflags

|+R|LOCKS|+W|: |R|lhide

& @info

This command will tell you a variety of different things. Type '@info' 
for a list of valid arguments.

& @disconnected
type:command
|+M|Syntax|+W|: @disconnected [|+B|rooms|+W|||+B|exits|+W|]

|C|This command will show disconnected rooms and/or exits that you control.

& @paste
type:command
|+B|Syntax|+W|: @paste [|+Y|<|+B|object|+Y|>|+W|[|+C|/|+Y|<|+B|attribute|+Y|>|+W|]]
|+W|        @paste channel=|+Y|<|+B|channel|+Y|>
|+W|        @paste program=|+Y|<|+B|object|+Y|>|+C|,|+Y|<|+B|program|+Y|>

If you specify <object>, you may also specify <attribute>. This will force
the text to be pasted into <object>'s attribute.

@paste channel=<channel> will display your pasted text to the <channel>
after you're done.

To stop pasting just enter a line with nothing but a period (.) or use the
'@pasteabort' command.

Examples:
@paste itsme                       @paste book/desc
This is an example                 The book is red,
of how to use                      and the book is green,
the @paste command.                Yay....me.
.                                  .

SEE ALSO: @pasteabort

& @pasteabort
Syntax: @pasteabort

This command is used only when in @paste mode. Use this command to abort
the @paste and not send it at all.

SEE ALSO: @paste

& away
See +away.

& +away
Message sent to players who page you when you are not connected.
+away <Message>                 Set your away message.
+away ?                         View your away message.
+away                           Remove your away message.

& +channel
+channel  Select or lists channels for the online communicator system.
The new +com communicator system supports an arbitrary number of named
channels.  Players who are working as a group can make up a channel name
for their group and add it to the list of channels which their +com is
listening to.

Usage:
  +channel +<channel-name>;<alias>

  Aliases are -mandatory-.

  e.g.:

     +ch +public;pub		Adds you to channel 'public' with alias 'pub'.
  
  +channel -<channel-name>    Deletes the named channel from the list.
  +channel <channel-name>     Sets your default channel (used with '=')
  +channel                    Lists the current channels on your +com.

For a general chatting channel, turn to channel 'public'.
You can listen to as many simultanous channels as you wish.
See help on +com.

& +todo
+todo
+todo add=<msg>
+todo delete=ALL|<msg #>
+todo swap=<msg #1>,<msg #2>
+todo insert=<msg #>,<new location>

When passed no arugments, this command lists what needs to be done on the 
MAZE.

+todo add will add a new message to the list.  +todo delete will delete a 
message from the list.  If you specify 'ALL' (case sensitive) then the 
entire list will be deleted.  +todo swap will cause the 2 specified 
messages to switch places.  +todo insert will move the specified message 
to the location specified.

Requires pow_misc to alter the list.

Example:
	+todo insert=4,2
        +todo add=We need to get this project done.

& +motd
+motd
+motd on[=ALL]
+motd off[=ALL]
+motd add=<msg>
+motd delete=ALL|<msg #>
+motd swap=<msg #1>,<msg #2>
+motd insert=<msg #>,<new location>

When passed no arugments, this command shows the Messages of the Day.

+motd on and +motd off control whether or not the MOTD is displayed when 
you connect. If you specify ALL then it will change every player's MOTD 
setting. Requires POW_MOTD to change everyone's setting.

+motd add will add a new message to the list.  +motd delete will delete a 
message from the list.  If you specify ALL (case sensitive) then the 
entire MOTD will be deleted.  +motd swap will cause the 2 specified 
messages to switch places.  +motd insert will move the specified message 
to the location specified.

Requires pow_misc to alter the MOTD.

Example:
	+motd insert=4,2
        +motd add=We need to get this project done.

& +swlm
+swlm [<msg>]

This command shows you the current SWLM (Stupid Who List Message) when no 
arguments are passed.  Otherwise, it sets a new SWLM.

& +dirmail
+dirmail <msg>

This commands writes official mail to all the overlords.  Requires 
pow_broadcast to use +dirmail.  You may use the 'gripe' command if you 
lack this power.

& +massmail
+massmail <msg>

This command mails all players.  You must have pow_broadcast to use the 
+massmail command.

& +whocolor
+whocolor [<color>]

This command will show the current color of the who list when passed no 
arguments.  Otherwise it sets the who list title color to <color>.

Example: +whocolor B

& +mlist
Syntaxes:
  +mlist create=<maillist name>        Create a new mailing list.
  +mlist +<maillist name>              Join a mailing list.
  +mlist -<maillist name>              Leave a mailing list.
  +mlist list[=<maillist name>]        List available mailing lists or
                                       list the members of a mailing list.
  +mlist <maillist name>=<message>     Post to a mailing list.

& +idle
Message sent to players who page you when you are connected.
+idle <Message>                 Set your idle message.
+idle ?                         View your idle message.
+idle                           Remove your idle message.

& +laston
+laston [<player>]

This command will tell you the last time <player> connected and 
disconnected.  If you don't specify <player> then a list of the last few 
players that connected will be shown.

& +mail
DreamsMAZE has an online mail system. The commands are as follows:

+mail read=[<user>:]<msg#>       Read message in <user>'s mailbox. The issuing
                                  player is default if <user> not specified.
 -Examples: +mail read=3         would read msg #3 in your mail.
            +mail read=wm:3      would read msg #3 in wm's mail if you sent it

+mail list[=<user>]              List messages to/from you in <user>'s mailbox.
                                   Issuing player is default user.
 -Examples: +mail list           Lists the messages in your mail.
            +mail list=wm        Lists all the messages you have sent to wm
                                   and they still have.

+mail delete[=<user>:][<msg#>]   Delete messages out of <user>'s mail. 
 -Examples: +mail delete=wm:1    Delete 1st msg in wm's mail, if you sent it.
            +mail delete=1,5     Delete messages 1 and 5 out of your +mail.
            +mail delete=5-9     Delete messages 5 through 9 in your +mail.

+mail undelete[=<user>:][<msg>]  Works exactly as +mail delete, to undelete
                                   messages deleted on accident.

+mail purge[=<user>]             Purge <user>'s +mail.  If no user specified,
                                   issuer is default.
 -Examples: +mail purge          Purge +mail marked for deletion in your +mail.
            +mail purge=wm       Purge msgs marked for delete in wm's +mail 
                                   sent by you, the issuer.

+mail check[=<user>]             Check <user>'s mailbox for msgs owned by you.

+mail Clear [=<user>]            Delete and purge all mail you own in target
                                   +mail mailbox. 

+mail killsent = <player>|ALL    Delete mail from <player>'s mail that you 
                                   sent. If ALL (case-sensitive) then delete
                                   all mail you've sent to everyone.

The old command style still works (for now):  see: help +mail2

& +mail2
These are the old commands. They still work for now...

+mail                           Check your mailbox for messages.
+mail <player> = <Message>      Send a message to another player.
+mail <n>                       Read message <n>.
                                mailbox
+mail delete                    Mark all messages from your mailbox
                                for deletion.
+mail delete = <n>              Mark message <n> for deletion.
+mail undelete                  Unmark all messages
+mail undelete = <n>            Unmark message <n>
+mail purge                     Removes all messages that were marked for
                                deletion.
Messages that are marked for deletion will have a 'd' next to them.

& +uptime
+uptime         This command gives you current runtime statistics.

& +version
+version        This command gives you the current version number for
the code being run on DreamsMAZE. It also tells you when the last code
update was done.

& @chown
@chown <object>=<player>. Changes the ownership of <object> to <player>.
Objects may be things, rooms or exits. To chown things, you have to be
carrying the thing. For rooms or exits, you have to be in the room. Objects
must have the chown_ok flag set before it can be @chowned (See FLAGS).
Any chowned object is automatically set Haven and !Inherit for security.

Players can't be @chowned; they always own themselves. 

& @create
@create <name> [=<cost>]. Creates a thing with the specified name. Creation
costs either <cost> Credits or 10 Credits, whichever is greater. The value
of a thing is proportional to its cost. To be exact, value=(cost/5)-1.

& @describe
@describe <object> [=<description>]. <object> can be a thing, player, exit,
or room, specified as <name> or #<number> or 'me' or 'here'. This sets the 
description a player sees when they use the command 'look <object>'. Without
a description argument, it clears the message. It can be abbreviated @desc.

& @destroy

@destroy <object>. This allows the recycling of objects and returns the
player's investment in the object when used. The Destroy_OK flag set on
an objects allows any one in possession of that object to @destroy it.
@destroy has a delayed effect, taking place approximately 10-15 minutes
after the command is issued. During that time you may use @undestroy to
stop the destruction process.  Objects that are protected may not be
destroyed.  See also @protect, @unprotect.

& @dig
@dig <name> [= Exits [, Return-Exits]]. Creates a new room with the specified
name and displays its number. This costs 10 Credits. If the [= Exits] option
is used, the exit will be opened and linked for you. You will have to link
back out from the room manually unless you use the [, Return-Exits] option.
Example: @dig Kitchen = Kitchen;k;north;n, Out;south;s will dig a room called
Kitchen, and open an exit called 'Kitchen' in your current room. The ; symbol
means that you may enter the exit by typing 'k','north' or 'n' also.  Only
the first Exit name is displayed. (See also 'help example @dig'.)

& @emit
@emit <message>. Emits the message to everyone on the room. The message
may be anything with one exception. The message cannot start with the
name of any player. Sorry, no spoofing. :)
& @find
@find [name]. Displays the name and number of every room, thing, or player
that you control whose name matches <name>.  Find costs 10 credits.

& @force
@force <player/object>=<command>. Forces the MAZE to act as though
<player/object> had entered <command>.  In general, objects you own
can @force you if you set them 'inherit'.  Only Administrators may 
@force other players.

& @link
@link <object>=<number>; @link <object>=here; @link <exit>|<room>=home. Links
<object> to room specified by <number>. For things and players, sets the home
room (See Homes). For rooms, sets the drop-to room (See Drop-to). For exits,
sets the target room; the exit must be unlinked, and you must own/control the
target room unless its LINK_OK flag is set. Linking an exit costs 1 Credit. If
the exit was owned by someone else, the former owner is reimbursed 1 Credit. 

& join
join <player>   An official command that teleports you directly to the
                location of <player>. 

& summon
summon <player>  An official command that teleports <player> to the
                 location where the official is. 

& @boot
@boot <player>. Disconnects the player from the MAZE. Only Directors can use
this command. 

& @announce
@announce <message>. Broadcasts <message> to every player connected. May be
abbreviated to @ann. Costs 1000 Credits per announcement. Players may block
out all announcements by setting themselves NO_WALLS (See FLAGS).

& @broadcast
@broadcast <message>  This is an Official command that allows a Director to
broadcast a message throughout the entire MAZE. It is similar to @announce,
but @broadcast cannot be blocked out as can @announce. Therefore, it should
only be used for emergencies, or urgent announcements. 

& @chownall
@chownall <player> = <newowner>.  Only a Director can issue this command.
All the possessions of <player> are @chowned to <newowner>. 

& @class
@class <player> = <class>. Reclassifies <player> to <class>, which must be
one of: Director, Admin, Constructor, Official, Junior Official, Citizen, or
Visitor. Only Directors may use the @class command. 

& @dbck
@dbck.  This lists disconnected rooms and clears the free list.

& @dump
@dump.  This command will dump the database for storage. It is vital to the
continued survial to the MAZE. An object is usually set up to do this
automaticly every few minutes. 

& @empower
@empower <object/player>=<powername>:{Yes,No,YesEQ,YesLT}.  Only Directors
may invoke this command, which alters the authorized powers of <object> or
<player>.  Yes and No unconditionally enable/disable the named power. YesEQ
and YesLT enable the named power to be used on objects or players of equal
or lesser status than <object/player>, respectively. Powers adjusted in this
way may not be elevated above the maximum allowed powers for each class of
player or object. See also @powers and @class. 

& @giveto
@giveto <player> = <amount>.  Quietly gives <amount> of credits to <player>
without generating the usual messages associated with the regular 'give'
command.  See also 'give'. 

& @newpassword
@newpassword <player> =<password>. Only Admins may use this command. Changes
<player>'s password, informing <player> that you changed it. Must be typed in
full. If you forget your password, log on as guest (password = guest) and
talk to an Administrator.

& @nuke
@nuke <player>. Only Directors may use this command. Recycles a player's
character, after which it no longer exists. Must be typed in full.
Cannot be used if the player owns any objects; see @wipeout and @chownall. 

& @pbreak
@pbreak.   This will give a list of the player broken-down into classes.
It is currently an Administrator command only.

& powers
powers <player/thing>.  Lists the authorized powers of <player> or <thing>.
See all @empower.

& @ps
@ps
@ps regen
@ps fight

This command lists queued commands which have not yet been executed.  See 
also @wait, @trigger, and @force, all three of which push commands onto 
the queue.

If 'regen' is specified then a list of creatures waiting to be 
regenerated will be listed.  This is a wizard-only feature.

If 'fight' is specified then a list of fight commands in the queue will 
be listed.

& @quota
@quota <me>.  This will give you your current and remaining quota.
@quota *<player>=<value>.  Will reset <players> quota to <value>. This is
a director command only.

& @shutdown
@shutdown. Only Directors may use this command. Shuts down the MAZE. Must be
typed in full. 

& @wipeout
Syntax: @wipeout <player> type=<type>

This command will destroy all of <player>'s possessions of type <type>. 
Requires POW_SECURITY.

& @name
@name <object>=<new name> [<password>]. Changes the name of <object>.
<object> can be a thing, player, exit, or room, specified as <name> or
#<number> or 'me' or 'here'. For a player, it requires the player's password.  

& @open
@open <direction>[;<other direction>]* [=<number>]. Creates an exit in the
specified direction(s). If <number> is specified, it is linked to that room.
Otherwise, it is created unlinked. You or anyone else may use the '@link'
command to specify where the unlinked exit leads. Opening an exit costs 1
Credit. If you specify <number>, linking costs 1 more Credit. See also @link
and @dig.

& @password
@password <old password>=<new password>. This changes your password.
It can be abbreviated @pass.

& @pemit
@pemit <player> = <message>. Emits the message to <player>. The message
may be anything with one exception. The message cannot start with the name
of a player, or of an object present int the room. Sorry, no spoofing. :)

Note: to emit messages to everybody in a room (or in an object), or to
every room in a zone, use @remit or @zemit.  The use of @pemit to send
a message to everyone in a room is obsolete, although it will work for now.

& @search
@search [<player>] [<class>=<restriction>]. This command searches the database
and lists objects which meet user specified search criteria. If a <player>
argument is supplied, only objects owned by that player will be listed. If a
<class> argument is supplied only objects of a certain class will be listed.
Possible <class>es include (TYPE, NAME, EXIT, OBJECT, ROOM, PLAYER, and FLAG).
If <class>=TYPE, possible <restriction>s include (OBJECT, ROOM, EXIT, PLAYER).
If <class>=NAME, only objects whose name begin with the string <restriction>
will be listed. If <class>=EXIT, OBJECT, ROOM, or PLAYER, only objects of that
type and whose name begin with the string <restriction> will be listed.
Finally if <class>=FLAG, only objects with the list of flags specified by
<restriction> will be listed. For the the class TYPE=PLAYER, and for
PLAYER=<player-name>, anyone  may obtain information on any player.  In all
other cases, only Officials may obtain information about other players.
Costs 10 Credits.

Examples:
   @search flags=RHD     <-- search for rooms set Haven and Dark.
   @search type=rooms    <-- list all rooms owned by me.

& @set
@set can be used both to set flags and to set attribute values.

To set a flag:
	@set <object>=<flag>
To unset the flag:
	@set <object>=!<flag>;

To set an attribute value:
	@set <object>=<attribute>:<value>

A shorthand may also be used:
	@<attribute> <object>=<value>

To copy attributes from one object to another, you can use:
	@<newattribute> <newobject>=_<oldobject>/<oldattribute>

See help on FLAGS, Attributes

& @stats
@stats. Display the number of objects in the MAZE broken down by object types.
Administrators can supply a player name to count only objects owned by that
player.

& @teleport
@teleport [<thing>=] <room|object>. Teleports <thing> to <room> or <object>.
The destination room must be set JUMP_OK (see 'help JUMP_OK flag') or it must
have the same owner as <thing>. Any object or player can be @teleported home
or to #0 by the owner of the room it is in. Exits can be moved to other rooms
by @teleporting them but the room they are being sent to must be owned by the
same person as the exit.

Examples:

@teleport blee=#0      - Sends object 'blee' to #0
@teleport foo=home     - Sends the object 'foo' home.
@teleport out=#48029   - Moves the exit 'out' to room #48029 
@teleport #2000        - Sends yourself to #2000

@teleport may be abbreviated as @tel

& @unlink
@unlink <exit>; @unlink here. Removes the link on the specified exit,
or removes the drop-to on the room. Be careful, anyone can relink an
unlinked exit, becoming its new owner (but you will be reimbursed your 1
Credit). See @link.

& whereis
@whereis <player>. Tells you the location of the player. If you wish to
remain unlocatable, set your DARK flag. (See FLAGS). The person being
located will get a message to inform them that you have successfully or
unsuccessfully located them.  Ex: @whereis Jin

& Flags
FLAGS     @set <object> = <Flags> to set, @set <object> = !<Flag> to reset.
Everything in the universe of MAZE (Rooms, Exits, Objects, Players,
etc...) are represented in the same way at the program level.  A room merely
has the room flags set and a player has the player flags set.  In addition,
flags also give objects abilities or qualities. For specific information on
a particular flag, request help on a flag title.  Example: help ROOM flag

  Flag  Title           Flag  Title           Flag  Title
------------------------------------------------------------------
  A - AUDITORIUM flag   h - HIDE flag         q - QUIET flag
  a - NO_ANN flag       I - INHERIT flag      R - ROOM flag
  b - BEARING flag      J - JUMP_OK flag      S - STICKY flag
  C - CHOWN_OK flag     K - KEY flag          s - SLAVE flag
  c - CONNECTED flag    L - LINK_OK flag      T - TRANSPARENT flag
  D - DARK flag         l - LIGHT flag        t - TERSE flag
  d - DESTROY_OK flag   M - MONSTER flag      v - VISIBLE flag
  E - EXIT flag         m - MORTAL flag       W - EQUIPMENT flag
  e - ENTER_OK flag     N - NO_WALLS flag     @ - ANSI flag
  F - FIGHT_OK flag     n - NEWBIE flag       + - NO_COM flag
  f - FLOATING flag     o - OPAQUE flag       * - NPC flag
  G - GOING flag        P - PLAYER flag       % - DEAD flag
  H - HAVEN flag        p - PUPPET flag       $ - SHOP flag
------------------------------------------------------------------

& AUDITORIUM flag
AUDITORIUM   When set on a room, it allows speech-locks (@slock) to be used.
This flag has no affect on players, objects, or exits.

See also : help @slock, @osfail, @asfail

& NO_ANN flag
NO_ANN	A player with this flag set cannot announce.

& BEARING flag
BEARING.    When set on any MAZE object, allows people to @addparent or
@delparent objects they control to or from the object with the BEARING flag
set.  If BEARING is not set, the object can neither bear new children nor
lose old ones.  See @addparent, @delparent.

& CHOWN_OK flag
CHOWN_OK   This flag, when set, allows you to transfer ownership to
another player. To set it, you must be carrying the object. You also
have to be in the room if you want to set this flag on rooms or exits.
After this flag is set, the new player may gain ownership of the object
by using the @chown command (See @chown).

& CONNECTED flag
CONNECTED  This flag applies only to players and it shows if the player
is connected or not. Thus, each time you are connected to the MAZE, you
should see the 'c' flag set, otherwise, you are not here! You cannot reset
this flag, and it is used internally by the code for things like
tabulating players for the WHO list, etc.

& DARK flag
DARK      If a room is DARK, then anyone who looks there sees only the
room description, no objects. If a thing is DARK, then 'look' does not list 
that object in the room's contents. Players who do not wish to have their
location found with the @whereis commands may set themselves DARK. Puppets 
cannot be DARK, but an object set puppet and DARK enters 'debug' mode, and
relays to its owner everything it does as well as everything it hears.

& DESTROY_OK flag
DESTROY_OK   When set on an object, it allows any player to destroy it
as long as the object is not locked against them. This is good for
things like notes, whereby the recipient can destroy the note after reading 
it, instead of having to look for you to destroy it.

& ENTER_OK flag
ENTER_OK   If an object or person is ENTER_OK, other players may enter
the object or person by using 'enter <object/person>. Players must also
have the ENTER_OK set if they wish to be able to receive things given to
them by other players via the 'give <player> = <object>'.

& EXIT flag
EXIT     This flag is automatically set on exits when you @dig, @open or
otherwise create an exit. It cannot be changed.

& FLOATING flag
FLOATING   When set on a disconnected room or *one* room of a group
of disconnected rooms it will supress the 'disconnected room' message.
This flag should be used only by experienced builders. Your 'floating'
rooms could easily be forgotten and/or misplaced.

& GOING flag
GOING     Used internally for the @destroy command, it is set on objects
that are set to be destroyed. If you change your mind about destroying an
object, use @undestroy to unset it.  

& HAVEN flag
HAVEN     This flag when used on a player will enable you to ignore all
messages from all other Citizens. When people page you, they will receive
your +haven message.  An object set HAVEN will be halted, and commands on
its registers will not be triggered.
See also: +haven

& HIDE flag
HIDE     A flag used to mark players who do not want their names to show
up on the WHO list. Set by @hide, and reset by @unhide. Administrators may
set a player's HIDE flag by using @set <player> = (!)HIDE

& INHERIT flag
INHERIT   If the INHERIT flag is set on an object, it inherits any special
powers of the player who owns the object.  Otherwise, the object has no
special powers.  An object set INHERIT retains the powers of the player who
owns it even when the player is temporarily set MORTAL.

& JUMP_OK flag
JUMP_OK     If a room is set JUMP_OK players can freely teleport to that
room.  (See also LINK_OK).

& KEY flag
KEY       When set on an object prevents puppets from picking it up.  This
flag also causes objects to return to their home when the person holding them
teleports away (except that the owner of the object can teleport with it).

& LIGHT flag
LIGHT     When set on an object, it enables the object to be seen in a
room set DARK.

& LINK_OK flag
LINK_OK   If a room or object is LINK_OK, anyone can link exits to it
(but still not from it).  Anyone can also set that room or object as their
home room. (See Homes).

& MORTAL flag
MORTAL     When set on a player, it inhibits the use of any special
powers associated with that player's Status.  A wizard can set him/herself
mortal for testing purposes, and then unset the flag again.

& NEWBIE flag
NEWBIE   When set on a player, it inhibits ability to see dbref number and
alerts other users that the player is new and may be in need of some
asistance. Players may set themselves not newbie (@set me=!newbie).

& NO_WALLS flag
NO_WALLS   When set on a player, it prevents the player from hearing any
announcements from Officials or from the Announcement Office. This does not
block out broadcasts, which are only used by Officials for emergencies.

& OPAQUE flag
OPAQUE   When set on a player, it prevents other players from seeing
what you are carrying in your inventory.  Players can still see objects
you are carrying that they own.

& PLAYER flag
PLAYER   The PLAYER flag identifies you as a player. This flag cannot be
reset by any player, not even a Director (not, yet, anyway *grin*). It is
used mainly by the MAZE code to identify your commands, check for
validity of commands or locks etc.

& PUPPET flag
PUPPET    @set <object> = puppet. Causes an object to grow eyes and ears,
and relay all it sees and hears to its owner.

& QUIET flag
QUIET    When you set this flag on yourself, it will block out all the
'Set' and 'triggered' messages that you get when your objects are set ot
triggered. This is useful if you have a lot of machines running continuously.
It will also keep you from hearing 'shake and crumble' and 'deposit back'
messages when you destroy your objects.

& ROOM flag
ROOM     This flag is automatically set on rooms when you @dig a new
room. It cannot be changed. 

& STICKY flag
STICKY    If a thing is STICKY, it goes home when dropped (See Homes). If a
room is STICKY, its drop-to is delayed until the last person leaves (See
DROP-TOs). Only meaningful for things and rooms.  

& SLAVE flag
SLAVE     A player set SLAVE will not be able to use any commands.  
However, the player can still talk, pose, and walk between rooms.

& TERSE flag
TERSE     If a player has the TERSE flag set, room descriptions will not
be displayed when they enter a new room. Contents and Exits will still
be displayed. This is good when you wish to move about quickly, or do
not bother to read room descriptions. Beware: You might miss some
important information in some room descriptions.  If an object is set terse,
it will not 'shake and crumble' when it is destroyed.

& TRANSPARENT flag
TRANSPARENT	If an exit is TRANSPARENT, then when you look at it you
will see first its description; then you will look through it and see the
description and contents of the room on the other side.

& VISIBLE flag
VISIBLE   When set on your object, it allows other players to examine it and
see all the object's attributes as if they owned the object. They cannot make
any changes to the object.

& EQUIPMENT flag
EQUIPMENT   An object with this flag is equippable for combat.

& ANSI flag
ANSI	ANSI colors won't be shown unless you have this flag set.

& NO_COM flag
NO_COM	This flag disallows you from sending messages over com channels.

& NPC flag
NPC	If this flag is set on an object, the objects @talk, @atalk, and 
@otalk are triggered when you 'look' at it as well as when you 'talk' to it.

See also: talk

& Attributes
Attributes are registers, attached to MAZE objects, in which you can store
data or commands.  There are built-in attributes, such as 'succ', 'osucc',
'fail', 'ofail', etc.  These can be set on any MAZE object.  The @defattr
command can be used to define additional attributes on particular objects.
(See the help on @defattr for more information on creating attributes).
Those attributes can be set only on the object on which they are defined,
or on descendants of that object. (See Inheritance).  User-defined attributes
can be set and unset the same way built-in attributes are set: with the
@set command, or with the @<attribute> shorthand (see the help on @set).

If an attribute is defined on an object obj1, then you can also set that
attribute on children of obj1.  You do not need to (and in general should not)
use @defattr to define the attribute on the children as well.

If two attributes defined on different objects have the same name, they are
different attributes (much like local variables in all standard programming
languages).  If one object is a child of another with a similarly-named
attribute there is an overlap.  In such a case, the variables are considered
lexically scoped and an object can reference only the most local version.
(See Inheritance for more information on this topic).

& Control
Control.     In general, you can examine, modify, or otherwise user or
abuse an object if you control it.  You control everything you own. Unless
you are an Official, you do not control anything else.  Officials and
Administrators have various degrees of control over objects and players
they do not own.

There is one exception to this rule: anybody controls an unlinked exit, and
can link to it. The exit is automatically @chown'ed to the player who links
it. Unlinked exits can thus be stolen; all builders should be aware of
this. 

& Exits
Exits.    Exits may be linked from rooms or objects into other rooms or
objects.  Thus you may take an exit and find yourself inside an object; if
there are no obvious exits where you are, try 'leave' before giving up.

& Getting started
Some commands to start with:

   QUIT - Wake up. Effectively quitting the MAZE
   WHO  - print list of users currently on this MAZE
   help - access online help
   news - access online news about this MAZE's events and topics

   say <something> - make your character 'say' <something>
        Example: say Hi Everyone! 
   page <player>=<message> - send a <message> to a <player> on the MAZE
        Example: page Jin=Hello, Can you help me?
   look  - look at the room you're in, or at a person or object in it.
        Examples: look
                  look Tourbot

Please see: +channel, channels, register, syntax

& Here
Here.     The word 'here' refers to the room you are in. For example, to
rename the room  you're in (if you control it), you could enter
"@name here=<new name>".

& Locks
A lock is an attribute that determines who may take, use, enter, or otherwise
control an object.  Currently in DreamsMAZE 4 locks are defined: the regular
lock (@lock), the enter-lock (@elock), the leave-lock (@llock), and the
use-lock (@ulock). Help is available on each of those.  In this discussion
we will refer to the @lock, but the same options are available for all the
other locks.

All of the following lock types are available:
        Ordinary locks (that work as in previous versions of MAZE)
        Is locks
        Carry locks
        Indirect locks
        Object Attribute Locks
        Register Locks
Help is available on each of the above topics.

Any lock of any type may be combined with any other in a boolean expression,
using '&' (and), '|' (or), '!' (not), and parentheses ('(' and ')') to group.
The lock is satisfied if the boolean expression evaluates to true.
& register locks
A register lock is a mechanism for locking a specific $ or ! event, unlike
the @ulock which locks all of the $ and ! events on an object.  The syntax
for seting individual register locks is:
        @<attr> <object>=$<verb-pattern>:/<lock>/<action-list>

Example:
        @va object=$blee:/#1/"foo

If Jin types 'blee' in the presence of the object, the object will say 'foo',
but the pattern 'blee' will not match this register for anyone else.  That is,
anyone else typing 'blee' will receive the standard 'Huh?' error message.

& ordinary locks
An ordinary lock is checked against the player (or object) trying to pick
up the locked object (or trying to walk through an exit).  It is also
checked against any object the enactor is carrying, and against the zone
the enactor (and hence the object) is currently in.  It can be specified
as a <name> or a #<dbref>, or as 'me' or 'here'.  To lock to a specific
player, prefix their name with '*' (ex. '*Jin').
 
Examples: @lock purse = #123            Can be picked up by player #123,
                                        or by anyone carrying object #123,
                                        or by anyone currently in zone #123.

          @lock purse = *Jin            Can be picked up by Jin, or by anyone
                                        carrying Jin.

Objects can also be locked to the value of an attribute on the enactor
(attributes on ordinary locks are not also checked on objects carried by 
the enactor).

Examples:  @lock thing=sex:m*           Object may be taken by anyone whose
                                        sex starts with an 'm'.

           @lock thing=last:>612345678  will lock thing to anyone whose 'last'
                                        attribute is greater than 612345678.

The value for the attribute may also be specified as a function, which is
evaluated each time an attempt is made to take the object.
 
Example:   @lock thing=sex:[add(3,4)]   will allow people whose sex is '7'
                                        to take the object.

& Me
Me.   The word 'me' refers to yourself. Some things to do when starting out:
1) give yourself a description with "@describe me=<description>", then look
at yourself with "look me". 2) set your gender, if you wish it known, with
"@set me=sex:male" or "@set me=sex:female" (or "@set me=sex:neuter" to be
 an 'it').  

& Puppets
Puppets.  An object is made into a puppet by doing @set [object]=puppet,
once an object is a puppet it will relay all that it sees and hears to its
master.  All objects created by a puppet are owned by its master, when
puppets spend or earn Credits they are also taken from and given to its
master. In order to prevent puppets from screwing up puzzles, objects may
have the key flag set, this will prevent puppets from picking the object up.
A puppet may be commanded by its master by:  @force [object]=command
or shorthand version:
[name/# of puppet] command
Example:       
@force fred="hi there. or     
fred "hi there. or       
#4342 "hi there.  

& Arguments
V(0) through V(9) are the ten items on the argument list.
Arguments can be set by either parameters after an @trigger
or asterisk substition in pattern

matching.
Example: @listen item=* foo *; @ahear item=: [v(1)] bar [v(0)].

& Timezones
Timezones         This feature coverts MAZE Standard Time to your preferred
                  Time Zone.  All times are now stored internally as a single
                  integer representing the exact number of seconds since a
                  fixed long-ago date.  When you run a command that involves
                  time, such as +laston, +uptime, or the time() and xtime()
                  functions, the MAZE checks your @tz setting to determine
                  what time to print out to you.  See @tz for more details.
                  The Default timezone for this MAZE is U.S. Mountain
                  Standard time.

& Types of objects
Types of objects.   There are 4 types of objects: things, players, exits, and
rooms. The first  letter following an object's ID number indicates the type:
P(layer), E(xit),  R(oom), otherwise, thing. Things are inanimate objects that
can be carried.  Players are animate objects that can move and carry. Exits
are the means by which objects move. Rooms are locations that contain objects
and linked exits. Things can be programmed using V-Registers so that they
perform useful and interesting behaviors.

& @edit
@edit <object>/<attr> = {oldstring},{newstring}.  <Object> can be a thing,
player, exit, or room; <attr> can be any attribute on <object> that holds
a string value (e.g. desc, succ, adrop, listen, ahear, va, vb, etc.).  The
first occurrence of oldstring is replaced by newstring.  If the strings
contain only alphabetic characters, the curly braces may be omitted.

& @halt
Usage: @halt [=<command>]
Description: @halt halts all commands waiting to be executed by the
invoking object, or by all objects owned by the invoking player.
Optionally, <command> will be run afterwards.

& mid function
mid(str,startchar,howmany)
                returns 'howmany' characters from str starting at the
                startchar'th character.  (i.e. mid(hithere,2,3) returns the)
                characters are numbered starting at 0.

& tan function
tan(num)        Returns the tangent of num.
& arcsin function
arcsin(num)     Returns the arcsine of num.
& arccos function
arccos(num)     Returns the arccosine of num.
& arctan function
arctan(num)     Returns the arctangent of num.
& log function
log(num)        Returns the logarithm base 10 of num.
& ln function
ln(num)         Returns the natural log of num.
& exp function
exp(num)        Returns num raised to the power of 'e' (reverse ln).
& pow function
pow(n1,n2)      Returns n1 raised to the n2'th power, where n1 and n2 are 
& fadd function
fadd(n1,n2)     Returns n1+n2 where n1 and n2 are floating point numbers.
& fsub function
fsub(n1,n2)     Returns n1-n2, where n1 and n2 are floating point numbers.
& fmul function
fmul(n1,n2)     Returns n1*n2 where n1 and n2 are floating point numbers.
& fdiv function
fdiv(n1,n2)     Returns n1/n2, where n1 and n2 are floating point numbers.
& sin function
sin(num)        Returns the sine of num.
& cos function
cos(num)        Returns the cosine of num. 
& land function
land(a,b)       Logical AND of a,b
returns 1 if both 'a' and 'b' are true. (see truth function)
& lor function
lor(a,b)        Logical OR of a,b
returns 1 if one or more of 'a' and 'b' are true. (see truth function)
& lxor function
lxor(a,b)       Logical XOR of a,b
returns 1 if one of 'a' and 'b' is true, but not both. (see truth function)
& lnot function
lnot(a)         Logical NOT of a
if truth(a) returns 1, this function returns 0. if truth(a) returns 0,
this function returns 1. see truth function.
& band function
band(a,b)       Bitwise AND of a,b (signed decimal integers) 
& bor function
bor(a,b)        Bitwise OR of a,b (signed decimal integers)
& bxor function
bxor(a,b)       Bitwise XOR of a,b (signed decimal integers)
& bnot function
bnot(a)         Bitwise NOT of a (signed decimal integers)
& sgn function
sgn(a)          1 if a>0, -1 if a<0, 0 if a=0.
& truth function
truth(a)        Returns 0 on the empty string, the number 0, and dbref #-1.
                Returns 1 otherwise.
& abs function
abs(a)          Absolute value of a.
& base function
base(num,oldbase,newbase)
                Converts 'num' from oldbase to newbase.  Bases must be
                between 2 and 36.  Digits in 'num' must be in range of 
                the oldbase.  Digits above 9 are 'a'(=10) through 'z'(=35),
                or 'A' through 'Z'.

        Examples:
                base(14,10,2) = 1110
                base(aa,16,10) = 170 
& sqrt function
sqrt(number)    Returns the square root of 'number', rounded down to the
                nearest integer.  If number is negative, returns the square
                root of its absolute value. 
& pi function
pi()                    Returns 'pi', which is approximately 3.1415927

& gt function
gt(num1,num2)           Returns 1 if num1 is greater than num2, 0 otherwise.

& lt function
lt(num1,num2)           Returns 1 if num1 is less than num2, 0 otherwise.

& fsqrt function
fsqrt(num)              Returns the floating-point square root for 'num'.
                        If 'num' is negative, returns 0.  
& lnum function
lnum(num)       Returns a list of numbers from 0 to (num-1).  The maximum
                legal value for num is 250. 
 
        Example: lnum(5) returns '0 1 2 3 4'.
& simp function
simp(<floating-point number>)     Returns the simplifacation of a floating-
                                  point number. For example, 027.603100 would
                                  return 27.6031.  
& dist2d function
dist2d(x1,y1,x2,y2)     Returns the distance between x1,y1 and x2,y2 as if
                        on a 2-dimensional graph.

& dist3d function
dist3d(x1,y1,z1,x2,y2,z2)     Returns the distance between x1,y1,z1 and
                              x2,y2,z2 as if on a 3-dimensional graph.
& comp function
comp(n,m)       returns 0 if n = m, -1 if n < m, 1 if n > m.  The
                comparison is numeric only. Alphabetic strings are
                treated as equal to 0.
& scomp function
scomp(str1,str2)
                returns 0 if str1 = str2, -1 if str1 < str2, 1 if
                str1 > str2.  For the purposes of comparison ascii
                values of characters are used, and str1 is less than
                str2 if it occurs earlier alphabetically.
 
        Examples:

                scomp(a,b) = -1
                scomp(abc,aba) = 1
                scomp(abc,abcd) = -1
                scomp(A,a) = -1
                scomp(a,A) = 1 


&rand function
rand(num)   	a number between 0 and num-1
& -------end math functions---------
& xtime function

Given an ASCII time string, returns a timezone-independent x-value.
This function is the inverse of the time() function.

xtime() --     xtime() returns the timezone independent X-value
               for the current time.  This X-value may later be converted to
               any timezone using the time() function.  For a discussion of
               X-values, see the help entry above for the time() function.


xtime(s) --    xtime(s) converts an ascii string `s' (without the
               quotes) into an X-value.  Xtime() has been written to analyze
               and interpret a variety of string representations of the time.
               If it won't recognize a particular specification, please advise
               nils@geom.umn.edu and we will try to increase its flexibility.

               It is important to realize that an ascii string representation
               of the time must be in `some' timezone.  This timezone must be
               known during the time of conversion in order to calculate the
               timezone independent X-value.  The following rules will be used
               to determine the best guess at the timezone for the string `s'.

               A) If the string `s' contains a timezone specification such
	        as `gmt', `edt', `est', `cdt', `cst', `mdt', `mst',
	        `pdt', or `pst', that timezone will be assumed during
	         conversion.
	       B) If A) fails, and the calling object has a TZ value set,
	          that value will specify the timezone.
	       C) If A) and B) fail, and the owner of the calling object has
	          a TZ value set, it will specify the timezone.
	       D) if A), B) and C) all fail, then the MAZE default timezone
	          will be used.

xtime(s,tz) -- Same as above, but with the timezone set explicitly as 'tz'.

See also time(), @tz, Timezones.

& time function
time()		Returns the current system time and date, in an alphanumeric
                format; the exact value returned depends on your @tz
                setting.  The default is U.S. Mountain Standard Time.
                time() first checks the @tz value on the object calling
                time(), and if none is present it next checks the @tz value 
                of the object's owner.

time(tz)        Returns the current system time and date, using 'tz' as the
                timezone value. 'tz' should represent a number of hours before
                or after GMT and can include an optional ':Y' or ':N' suffix
		which indicates if U.S. style daylights savings time is to
		be taken into consideration.  'tz' can also be the special
                value 'D' which means that the object's default timezone is
                to be used. time(D) returns the same value as time().

time(tz,x)      Returns the time and date represented by the long integer 'x'
                in timezone 'tz', where 'tz' is as above and 'x' is the
                timezone-independent internal representation of the time,
                expressed as the exact number of seconds since Midnight
                Greenwich Mean Time in the morning of Jan 1, 1970.
                time(D,x) returns the time represented by 'x'
                while using the object's default timezone.

		See also xtime(), @tz, Timezones.

&get function
get(obj,attr)
get(obj/attr)	These two formats are equivalent and each returns the
		value of the 'attr' attribute on object 'obj'.

	Examples:

		@sex me = neuter
		get(me/sex) then returns the string 'neuter'.

		get(#123,va) returns the value of 'va' on object #123.

& strlen function
strlen(str)	number of characters in str
&quota function
quota(player)	returns the quota of player
&quota_left function
quota_left(p)	returns the balance of unused quota for player p.
&credits function
credits(player)	returns the number of credits belonging to player
&s function
s(str)		does pronoun substitution on str.
&num function
num(obj)    	obj. # of obj.
&con function
con(obj)    	first thing in the contents list of obj. 
                See also 'next function'.
&exit function
exit(obj)   	first exit in a room. (i.e. exit(here) -> first exit )
		exit() on a thing returns its home. See also 'next function'.
&next function
next(obj)   	next thing in a list. (i.e. next(exit(here)) -> second exit)
&link function
link(obj)	destination of an exit; home of a player or object; dropto
		of a room.
&loc function
loc(obj)    	location of obj. (Room #)
&owner function
owner(obj)    	number of the owner of obj.
&name function
name(obj)	name of obj. (obj is probably #<obj. num.>)
&match function
match(s1,s2)	returns 1 if s1 matches s2, 0 otherwise.  s1 is a character
		string, and s2 is a string which may contain wildcards.

&pos function
pos(str1,str2)	returns the position in str2 where str1 first appears.
&extract function
extract(str,wordnum,howmany)
    	    	returns the string from str starting at word number wordnum
		and containing 'howmany' words.
		(i.e. extract(four score and seven years,2,3) returns
		score and seven.)  extract(str,1,1) == first(str).
		Words are numbered starting at 1.
&remove function
remove(str,wordnum,howmany)
		return the remainder of string 'str' after removing 'howmany'
		words starting at wordnum.
		(i.e. remove(four score and seven years,2,3) returns
		'four years'.) Words are numbered starting at 1.
&delete function
delete(str,charnum,howmany)
		returns the remainder of string 'str' after deleting 'howmamy'
		characters starting at charnum. Characters are numbered
		starting at 0.  (i.e. delete(abcdef,2,3) returns 'abf'.)
&flags function
flags(obj)  	Returns a string consisting of the current flags on obj.
&class function
class(player)   Returns the class of a player.
&zone function
zone(obj)       If obj is a room, returns the db # of the room's zone. If
                obj is an exit, thing, or player, returns the db # of the
                room the obj is in.  The function checks for objects inside
                other objects and traces all the way back to a room before
                returning a zone #.
&wmatch function
wmatch(str,arg)  Takes a string of words/numbers (str) separated by spaces,
                 and locates the position of the argument (arg). The function
                 returns a value of '0' if the argument is not in the string.
                 For example: "wmatch(blee foo garb fargle,foo)" will return a
                 value of '2'.  The wmatch() function is not case sensitive.
& privacy

This help topic attempts to explain to what extent your communications
with other users on the MAZE are kept private.  Reading this section
will give you a better understanding of how 'safe' your privacy is.

  1) When you speak normally, using the 'say' command, you are heard by
     every object in the room that is 'listening'.  To determine who and
     what is listening, the user may use the @sweep command.  You may
     see objects 'listening' that listen only for a particular command,
     but unless you own the object you cannot know for certain whether an
     object in the @sweep list is listening to everything you say.

  2) This MAZE does not record ordinary speech, pages, or whispers within
     its log files or any other fashion. If nobody in the room is listening, 
     there is no way for anybody outside the room to know what you are doing.
     The only exception to this rule is that, for debugging purposes, we
     may occasionally log the last few commands executed just before a system
     crash, but never more than that.  Even in such cases, commands executed
     more than one minute before the crash will never be logged.

  3) Things said with the 'whisper' and 'page' command, when these are used
     correctly, are heard only by the player to whom they are addressed. No
     other user or object can hear them.

  4) Things broadcast over the +com channels are heard by everyone on the
     channel. Read the online help to learn how to tell who is on the channel.

  5) Any user may use the @whereis command to determine the location
     of another user.  If you do not wish to be located, you may use
     the command '@set me=dark' to prevent other users from locating you.
     When you use the @whereis command, the other user receives a message
     to the effect that you are finding out where they are.

  6) Any user may use the @hide command to remove their name from the WHO
     listing.  There is a charge for this each time you use it.  To restore
     your name on the list, use the @unhide command. You are also unhidden
     automatically each time you reconnect to the MAZE.

  7) Users may use the command '@set me=Haven' if they do not wish to
     receive pages, and '@set me=No' if they do not wish to hear public
     announcements.

This topic is long. If you missed any of it and do not have a scrollback
option, try setting '/more on' in tinyfugue and reading it page by page.

& @echo

@echo <message>. This command displays <message> to you only.
See also: @necho


& @necho

@necho <message>. This command displays <message> to you only, but also
allows n-phrasing, so you could type multiple spaces and other characters that
wouldn't normally come out with @echo. If this command is used in an
attribute, it still must be @nset.
See also: @echo, @nset

& entrances function

entrances(<object>) is a function analogous to @entrances, (actually,
@entrances uses entrances(), and was implemented as a command on the
universal zone object). It returns a list of exits leading into <object>,
in a format suitable for use by @foreach (that is, space-separated dbrefs).

& objlist function

objlist(<object>) returns a list of space-separated dbrefs of the list
of objects beginning with <object>.  It is analagous to using the 'next'
function repeatedly on an object and return the list of results.

The two most common ways to use this function are in conjunction with con()
or exit().  Here are some examples:

	@foreach objlist(con(here))=say %0 is here!

this will cause you to tell about all objects that are in the current room

	@foreach objlist(exit(here))=say %0 is a way out!

this will go through all exits leading out of the current room, and cause
you to tell people that they can get out through them.

& @remit

@remit <object> = <message>

Emits <message> to the contents of <object>.  <object> is generally a room.
This command supersedes @pemit <room> = <message>, which is now obsolete,
although it will continue to work for a while.  See @pemit, @zemit.

& truth function
truth(a)	Returns 0 on the empty string, the number 0, and dbref #-1.
		Returns 1 otherwise.

& @getalias
@getalias User
Tells you the user's alias, if any.

& objmem function
objmem(object)		Returns the number of bytes used by the object.

& playmem function
playmem(player)		Returns the total number of bytes used by all the
			objects owned by the player.

& @oemit
@oemit <object>=<string>.  This command emits <string> to everything in the
room *except* <object>.  See also @emit, @pemit.

& @noemit
@noemit <object>=<string>.

Emits <string> (w/o eliminating extra spaces) to everything in the room 
*except* <object>.

See also: @emit, @pemit

& if function
if(test,act)		This function checks the test, and returns act1
			if the test is true, otherwise it returns nothing.
			The test is false if it evaluates to 0, to #-1, or
			to the null string. Otherwise it is true.  See also
			ifelse(), truth().

& ifelse function
ifelse(test,act1,act2)	This function checks the test, and returns act1
			if the test is true, act2 if the test is false.
			The test is false if it evaluates to 0, to #-1, or
			to the null string. Otherwise it is true.  See also
			if(), truth().

& wcount function
wcount(string)		Returns the number of words in the string.

& strcat function
strcat(str1,str2)
		Returns the concatenation of the two strings, str1
		and str2.  Example: strcat(abc,def) returns abcdef.

& @nemit
@nemit <string>
	Works just like @emit except does not parse its argument.  May be
used for emitting strings with spaces in them, or with brackets and
parentheses, without worrying about functions being evaluated or spaces
being removed.

See also @npemit, @nset.

& @npemit
@npemit obj=<string>
	Works just like @pemit except does not parse its argument.  May be
used for pemitting strings with spaces in them, or with brackets and
parentheses, without worrying about functions being evaluated or spaces
being removed.

See also @nemit, @nset.

& @nset
@nset <obj>=<attr>:<commands>
	Works just like @set does for setting attribute values, except does
not parse its argument.  May be used for setting attribute values with
leading or embedded spaces, or with brackets or parentheses, without
worrying about functions being evaluated or spaces being removed.

See also @set, @nemit, @npemit.

& lwho function
lwho()		Returns a list of dbrefs of connected users.  If an object
		uses this function it is charged 50 credits.

& idle function
idle(user)	Returns the idle time, in seconds, of the given user.  If
		the user is not connected, nonexistant, or hidden, the
		function returns #-1.

& onfor function
onfor(user)	Returns the connect time, in seconds, of the given user.
		If the user is not connected, nonexistant, or hidden, the
		function returns #-1.

& host function
host(user)	Returns the hostname of the given user.  If the user is not
		connected, nonexistant, or hidden, or if you are not
		authorized to see the user's hostname, returns #-1.

& type function
type(object)	Returns the type of the object, where type is one of Player,
		Room, Exit, or Thing.

& lattr function
lattr(obj)	Returns a list of the attributes on object 'obj' that have
		a non-null value.  See also lattrdef().

& lattrdef function
lattrdef(obj)	Returns a list of the attributes defined (with @defattr) on
		object 'obj'.  See also @defattr, lattr().

& tms function
tms(num)	Takes a number of seconds, and returns the time represented
		by the given number of seconds, in the format of the idle
		column in the WHO list, showing 's' for some number of
		seconds, 'm' for some number of minutes (dropping any
		fraction), 'h' for some number of complete hours, or 'd' for
		some number of complete days.

	Examples: tms(33) returns '33s'.
		  tms(121) returns '2m'.
		  tms(86401) returns '1d'.

& tml function
tml(num)	Takes a number of seconds, and returns the time represented
		by the given number of seconds, in the format of the 'On For'
		column in the WHO list, showing hh:mm for times less than one
		day, and dd hh:mm for periods longer than one day.

	Examples: tml(33) returns '0:33'.
		  tml(121) returns '02:01'.
		  tml(86401) returns '1d 00:01'.

& flip function
flip(string)	Returns the character-reversal of the argument string.

	Example: flip(abcd efg) returns 'gfe dcba'.

& string function
string(char,num)	Returns a string of 'num' occurences of 'char'.
	Example: string(*,6) returns '******'.

& matchplay function
matchplay(player)   Returns the dbref number of player.  This is different
from the num function in that it only works on players, and the player
need not be in the same room as you.

& ljust function
ljust(string,num)	Returns the string, left-justified in a field of
			width 'num'.

& rjust function
rjust(string,num)	returns the string, right-justified in a field of
			width 'num'.

& cjust function
cjust(string,num)       Returns the string, center-justified in a field of
			width 'num'.

& spc function
spc(n)			Returns a string consisting of n spaces.

& plural function
plural(num,suffix)      Returns the 'suffix' text if 'num' does not equal 1.
			This returns a null string otherwise.

& art function
art(word)               Returns an article of a word; basically 'a' if the
			first letter of the word is a constanant, 'an' if
			it's a vowel.  This function may be improved later.

& subj function
subj(<object>)          Returns the subject form of <object> (he, she, it),
			depending on its sex. Similar to %s, but returns 'it'
			instead of the subject's name if the sex is neither
			male nor female.  See objn(), poss().

& objn function
objn(<object>)          Returns the object form of <object> (him, her, it),
			depending on its sex. Similar to %o, but returns 'it'
			instead of the object's name if the sex is neither
			male nor female.  See subj(), poss().

& poss function
poss(<object>)          Returns the possesive form of <object> (his, her,
			its), depending on its sex. Similar to %p, but
			returns 'its' instead of the apostrophe-S version
			of the object's name, if the sex is neither male
			nor female.  See also subj(), objn().

& lcon function
lcon(<object>)          Returns a space-separated list of items in <object>.

& lexit function
lexit(<object>)         Returns a space-separated list of exits in <object>.


& rtime function
rtime([<seconds>])                Returns a short time readout in hours,
				  seconds, minutes, and AM or PM. <seconds>
				  may state the number of seconds starting
				  at a fixed point of time. <seconds> can
				  be added together with 'xtime()' to in-
				  crease or decrease the current 'rtime'
				  by seconds, minutes, or hours. If <seconds>
				  is omitted, the current time will be
				  displayed.

& stime function
stime(<seconds>)                  Returns the string-readout of the time in
				  <seconds> after a fixed point of time.

& nearby function
nearby(obj1,obj2)	Checks to see whether obj1 is 'nearby' obj2.  Two
			objects are near each other if they are in the same
			room, or if one is inside the other.  Returns 1 if
			the objects are nearby, 0 if not, and #-1 if either
			object cannot be identified or if you cannot find the
			location of either object.  You must control both
			objects to get a precise outcome.

& room function
room(<object>)          Traces all the way back to the actual room that
			<object> is in, and returns that room number.
			This works no matter how deep inside boxes an object
			might be.

& controls function
controls(p1,p2,power)   Returns 1 if player1 has a specific 'power' over
			player2, else 0. An example of a 'power' is Join.

& hasflag function
hasflag(<object>,flag)  This will return 1 if <object> has the specified
                        flag, and 0 if not.

    Example: say [hasflag(*Jin,c)]  -see if Jin is connected

& haspow function
haspow(<object>,power)  This will return 1 if <object> has the desired power,
                        and 0 if not. An example of 'power' is Join.

& @npage
@npage <player>=<message>

Pages a player without parsing the message. For example.. using @npage, you
can type '@npage player=()*{}    []' and it will come out exactly that way.

See also: page

& @apemit
@apemit <object>=<commands>

These set of commands will be activated whenever <object> gets a @pemit.

See also: @apage, @awhisper

& @grep
@grep <object>|ALL=<string>

This command displays all attributes on <object> that contain <string>.
If ALL (case-sensitive) is specified, every attribute on every object in 
the database will be searched. Requires pow_database and you must be able 
to examine the object if you use the ALL feature.

& @admin
@admin

This command displays the members of the DreamsMAZE administration and if 
they are currently connected.

& @powcount
Syntax: @powcount <power>

This command will show everyone that has the power of <power> and what
level is it.

& @cemit
@cemit <channel>|<channel alias>=<mesg>

This command will emit <mesg> onto the specified channel.  Requires POW_SPOOF.

& @inactive
@inactive

This command will show a list of all players inactive for 6 months (180 days)
or more.  Requires POW_MISC.

& change function
change(str1, str2, n)           This function will change the 'n'th character
                                in str1 to str2. If there is more than one
                                character in str2, they will be inserted.
                                Characters are numbered starting at 1.

      Examples:  [change(abcdefg, x, 3)] = abxdefg

                 [change(abcdhijkl, defg, 4)] = abcdefghijkl

& linkup function
linkup(object)          Returns a list of dbref numbers of objects @linked
                        to 'object'.

& +queuelag
+queuelag. This command tells the time between typing the command and when the
actions are performed. For example, If You typed +queuelag and recieved
"Difference of commands: 2s - 07:50:04 PM & 07:50:06" that means it would take
2 seconds between the time you typed a command until its execution.

& inventory
inventory. Lists what you are carrying. Can be abbreviated to 'i'. 

& talk
talk <thing>

This command will trigger <thing>'s talk, atalk, otalk.  Used by builders
for NPC's mostly.

& changes
changes
changes all
changes list
changes today|yesterday
changes <date>

This command shows the hardcode changes log.  When passed no arguments it
will display all the changes since you last used the command with no
arguments (as per the LastChange attribute). When 'all' is specified the
entire file.  If you specify 'list' it will show all dates that hardcode
changes were recorded on.  If you specify 'today' or 'yesterday' it will 
show all changes made that day or the day before respectively.  If you
specify <date> it will show changes that were logged on that date.

NOTE: <date> is in the format month/day/year  (e.g. 7/8/96).

& whois
whois <player>

This command tells you various information about <player>.  To set your 
own whois information, set your @rname, @email, and @whois attributes.  
If you need further help ask a director.

&fcomp function
fcomp(n,m)      returns 0 if n = m, -1 if n < m, 1 if n > m.
		Where n and m are floating-point numbers, the 
		comparision is numeric only. Alphabetic strings
		are treated as equal to 0.
& justify function
justify(text,line#,char-length)	This function fully-justifies a line of
				words and prints them out accordingly, up
				to the maximum character-length specified,
				or until the end of the <text> is reached.
				It will display the specified <line#> of
				the text, filled with spaces necessary to
				fill up the last <char-length>-th column.

Example: justify(ab cd ef gh. ij kl mn op,1,10) equals..
	     ab  cd  ef
whereas: justify(ab cd ef gh. ij kl mn op,2,10) equals..
             gh.  ij kl
and:     justify(ab cd ef gh. ij kl mn op,3,10) equals..
	     mn op

& replace function
replace(string,word,replacement)  This function will replace the 'word' in
                                  'string' with 'replacement'

                       Example:   replace(foo bar blee,bar,bonk) would return
                                  'foo bonk blee' because it replaced 'bar' in
                                  the string 'foo bar blee' with 'bonk'.
& rank function
rank(player)    This function would return one of the following numbers 
                according to the player's class:

Lamb: 1           Squire: 5        Advisor: 9
Worker: 2         Guard: 6         Overlord: 10
Peasant: 3        Knight: 7
Adventurer: 4     Leader: 8

These number can then be used in boolean expressions.

Example: @switch [rank(v(N))]=>5,{say HELLO!},{say Sorry, Officials only.}

In this example, it would say 'HELLO!' if you where of a rank higher than 5,
wich would be a Guide, and say 'Sorry, Officials only.' if you where a Guide or
lower.

& dayofyear function
dayofyear(time()) or		This function will return the actual day of
  dayofyear(wtime())..		the year, from 1-366.

& insert function
insert(string,wordnum,word)   This function will insert 'word' after the
                              specified word in 'wordnum' inside 'string'

                              Example: insert(blee foo bar,2,wooblam)

                              This would return 'blee foo wooblam bar' because
                              the example says to insert the word 'wooblam'
                              after the 2nd word in the string 'blee foo bar'
& switch function
switch(<str>[,<pat1>,<res1>]...[,<dflt>])

  The switch function compares <str> against <pat1>, <pat2>, etc (allowing *
  to match any number of characters and ? to match any 1 character), and
  returns the corresponding <resN> parameter for the first <patN> pattern
  that matches.  If none match, then the default result <dflt> is returned.
  Example:
    > say switch(c,*a*,A,*b*,B,*c*,C,*d*,D,E)
    You say "C"
    > say switch(f,*a*,A,*b*,B,*c*,C,*d*,D,E)
    You say "E"
    > say switch(cab,*a*,A,*b*,B,*c*,C,*d*,D,E)
    You say "A"
    > say switch(f,*a*,A,*b*,B,*c*,C,*d*,D)  
    You say ""
  See also: @switch, match().

NOTE: You may only check against 4 different matches and a default.

& foreach function
foreach(list,action)  analagous to @foreach command, but a function.

example:
  [foreach(a b c,x[name(v(0))]x)] -> xax xbx xcx

& stringeq function
stringeq(arg1,arg2)           This function returns 1 if arg1 matches arg2
                              exactly. 0 is returned if it does not. This
                              function does not accept wildcards like match()
                              does.
                             
& round function
round(number)                 This function will round 'number' to the nearest
                              ones place.

                              Example: round(6.789) would return 7

& comma function
comma(number)                 This function inserts commas in 'number' to
                              divide the number into it's proper places.

                              Example: comma(10000000000) would return
                              10,000,000,000

& ctof
ctof(degrees celcius)         This function will convert celcius to
                              fahrenheit.

& ftoc
ftoc(degrees fahrenheit)      This function will convert fahrenheit to
                              celcius.

& hasstr function
hasstr(string1,string2)       This function checks to see if string1 is located
                              in string2. If it is, a 1 is returned, and if it
                              is not a 0 is given.

                              Example: hasstr(blee foo bar,foo) would return 1
                              because string2 'foo' is found in string1

& nspc function
nspc(string)                  This function removes the spaces around a string.
                              For example, nspc(    foo bar blee        ) would
                              return 'foo bar blee' with no spaces around it.

& is_are function
is_are(string)                Returns 'is' if string is 1 and returns 'are' if
                              string is 0.

& andf function
andf(string)                  This function inserts 'and' before the last word
                              in a string.

                              Example: andf(boo blee foo) would return
                              'boo blee and foo'

& lrest function
lrest(string)                 This function returns all of the words in string
                              except for the last one.

                              Example: lrest(blee foo bar) would return
                              'blee foo'

& llast function
llast(string)                 Returns the last word in string.

                              Example: llast(draco Acme Zephyr) would return
                              'Zephyr'

& pnum function
pnum(player)                  Returns the dbref number of 'player'

                              Example: pnum(Zephyr) would return #40043

& fdate function
fdate(time())                 This function will return the date in time() in
                              a word form.

                              Example: fdate(time()) would return
                              'Saturday, May 29, 1993' if you happen to use
                              fdate() on that day.

& eq function
eq(n1,n2)			Returns 1 if n1 and n2 are equal, else 0.

& roman function
roman(number)			Returns the roman numeral for <number>.

& fill function
fill(number, zeroes)		This function will fill up the remaining
				digits on the left side of the number with
				zeroes. Example: fill(45,6) = 000045

& between function
between(number,n1,n2)		Returns 1 if <number> is equal to n1, equal
				to n2, or between n1 and n2. 0 otherwise.

& isattr function
isattr(obj/attr)		Returns 1 if obj/attr is a valid attribute,
				0 otherwise.

& wchange function
wchange(sentence,word#,newword)	This function replaces word# with <newword> in
				<sentence>. Example:

wchange(ab cd ef gh,2,blee) = ab blee ef gh


& mudname function
mudname()                       Returns the name of the MAZE. This is usually
				the name that appears in various mud lists,
				and is the name that the mud is listed under
				in reports from RWHO servers (that is, if
				the mud sends its WHO information to an
				RWHO server).

& parseobj function
parseobj(player, obj#)		This function will parse out the name of
				the object# that you specify, along with
				its actual number and flags (depending if
				<player> can see it), and its ansi colors
				(again, if the player is set ansi) all in
				a string. obj# must be a valid name, or
				could be #<number, ranging from -4 to the
				last object in the database>.

& madd function
madd(n1,n2,...,n10)		Multiple addition. There can be up to 10
				args.

& lteq function
lteq(arg1,arg2)      Returns 1 if arg1 is lower than or equal to arg2. It
                        returns 0 is it is not.

& gteq function
gteq(arg1,arg2)      Returns 1 if arg1 is greater than or equal to arg2. It
                        returns 0 if it is not.

& date function
date()               Returns the date

& is_a function
is_a(object,parent)  Returns 1 if 'object' has 'parent' as a parent.

                     Example: is_a(#40043,#4000) would return 1 because #40043
                     is a child of #4000

&isdigit function
isdigit(<char>)

This function gives a 1 if <char> is a digit (0-9), and 0 if it is a
letter, or symbol.

& hasgoal function
hasgoal(object,goal)

Returns 1 if <object> has <goal> in its goals list.  Otherwise, returns 0.

& nextgoal function
nextgoal(player)    Returns the next goal that <player> has to do.

& mazename function
mazename()

Returns the name of the MAZE.

& players function
players()

Returns a list of dbref numbers representing all the players on DreamsMAZE.

& start function
start(<word>)        Returns the first letter of <word>.

& end function
end(<word>)          Returns the last letter of <word>.

& last function
last(<sentence>)     Returns the last word of <sentenece>.

& strchr function
strchr(<string>,<char>)  Returns 1 if <string> contains <char>.

& anum function
anum(<char>)          Returns the ASCII decimal value of <char>.

& dtof function
dtof(<celcius degrees>)     Converts degrees Celcius to degrees Fahrenheit.

& dtoc function
dtoc(<fahrenheit degrees>)  Converts degrees Fahrenheit to degrees Celcius.

& randword function
randword(<string>)    Returns a random word from <string>.

Example: say I'm going to the [randword(store park)] today.
         Might say 'I'm going to the store today.'
         Might say 'I"m going to the park today.'

& denied function
denied()      Returns a permission denied message.

& randroom function
randroom(<area>)

Returns a random room in area <area>.  Used for combat mostly. Ignore it.

& huh function
huh()         Returns a random huh message.

& chr function
chr(<num>)    Returns the representative character from the ASCII table.
              Requires POW_FUNCTIONS.

& randclr function
randclr(<string>,<color list>)

This will color each character in <string> with a random color from <color 
list>. <color list> must be a list of colors seperated by spaces.

For a list of colors see 'help colorlist'.

& float function
float(<number>,<format>)

This function will truncate a floating-point number to a given place. If
the format number is negative, then after the normal truncation takes
place, it will go through the number and remove any trailing zero's (0) as
well.

NOTE: If rounding is necessary, this function will do it.

Examples:
	float(12.3456,2)       returns   12.35
        float(12.3456,6)       returns   12.345600
        float(12.3456000,-6)   returns   12.3456
        float(99.9999,2)       returns   100.00

&even function

This function gives 1 if its argument is an even number, and 0 if it is
odd.

&odd function

This function gives 1 if its argument is an odd number, and 0 if it is
even.

& @defown
@defown <PLAYER>=<# of PLAYER2>  (default is PLAYER2=PLAYER)

This command is used in the group ownership feature. 
PLAYER is usually yourself. 
'# of PLAYER2' is the object# for a second player (the groupchar)
when this is set, everything created by PLAYER is owned by PLAYER2.
EXAMPLE:  @defown me=#4550   (everything you create while this is set is 
                              owned by player #4550)
          @defown me=        (this cancels out @defown)
At the present time, the only valid player numbers for this command is
your own, and that of any group that you belong to. there is no limit on
the number of groups you can belong to.

SEE ALSO: group ownership, @users

& first function
first(str)      the first word of str
& rest function
rest(str)       everything *BUT* the first word of str

& tmf function
tmf(seconds)			This function returns the number of seconds
				in a full word form, such as '49 seconds',
				or 'an hour', or '2 days'.

& color

DreamsMAZE is equipped with ANSI colors.  To use these, you simply put the
color name in caps between two |'s.

To make it so you can see colors you must type: @set me=ansi

To color an object/room/player, you simply type the color name in caps. 
You don't need the |'s.  Exaple: @color box=R

You may also use other options to effect the color. These options are: 
+, b, REVERSE.  Example: @color box=+B

For a list of colors see 'help colorlist'.

& colorlist
Available colors are:
  |+N|N        |B|B
  |R|R        |M|M
  |G|G        |C|C
  |Y|Y        |W|W

You can also set the background color with these:
  |0|  |n| 0        |4|  |n| 4
  |1|  |n| 1        |5|  |n| 5
  |2|  |n| 2        |6|  |n| 6
  |3|  |n| 3        |7|  |n| 7

Color options are:
  +        b       r

Example: @color toy=+bG

See also: color