.SH Other Classes
.I Snoop:
.LP
This class is used to maintain lists of which users are watching
which users magically. Snoop allows a user to see exactly what appears on
another users display. This class pair is maintained automatically by the
system and database actions.
.LP
.I Dup:
.LP
This is used to tag temporary clones of an item. Such clones have
to be tagged as when they are destroyed by the database they vanish forever.
.LP
.I InOutHere:
.LP
When a player moves it displays messages of the form:
.br
'<Name> goes north.'
.br
'<Name> arrives.'
.br
'<Name> is here.'
.br
'<Name> is here carrying itemlist.'
.LP
These text strings can be customised in the game database language. The
current settings are stored in a InOutHere class.
.LP
.I Chain:
.LP
When the state of an item is changed by the database any item it
is chained to also changes to that state. Note that a chain is one way,
so that to lock a pair of items to the same state (eg a door) you would
chain both to each other. Chains are created with the command
.I chain <sourceitem> <targetitem>
, and removed with the command
.I unchain <sourceitem> <targetitem>.
The 
.I II
command for viewing basic item information displays chains in its
list of classes as 'Chain -> <targetitem>', and this command can thus
be used to view chains.
.LP
.I UserFlag:
.br
.I UserFlag2:
.br
.I UserText:
.LP
A total of eight strings, sixteen other items and sixteen
numbers can be stored as user flag values by the database. The 
command
.I showuser <item>
displays these values. To minimise storage
they are fragmented into three classes. One holds the first 8 items
and values, the second the next 8 items and numbers, the final one
holds the text. Thus you should ensure that items needing several of
these values generally end up with all flags used falling into one
of these categories to minimise memory usage.
.LP
.I Share:
.LP
When you have a set of identical items you can use share to
lower memory usage. For example to create a maze you might create
12 items set exits between them, give one a room property and then
tell all the others to share it. Any classes an item doesn't
posess are fetched from its shared item. It is important to note
that anything affecting the shared class will affect the one in 
the item it shares it from. Thus to make a room of a shared item
and alter its properties you 
.I MUST
unshare it first. Shares are constructed by typing 
.I share <item1> <item2>
, and removed by using 
.I unshare <item1> <item2>
 - where item1 is the item which uses classes from item2. As 
with chains they are shown by the
.I II
command. 
.SP 2
.SH Handy Commands
.LP
Several handy commands are built into the game system to aid 
testing and building. In paticular when dumping a large game
to generate printouts, the commands 
.I showallplayers
,
.I showallrooms
and 
.I showallobjects
may prove useful.
.LP
On especially complicated area is building a door. This requires
creating two items, making them objects, naming them, chaining
them to each other, placing them somewhere and finally setting
exits in both directions. Because this is so messy a single command
.I doorpair <adjective> <noun> <fromroom> <direction> <toroom>
, creates a door named adjective noun in both rooms, sets initial
descriptions links it all up and creates a bidirectional door
between the two rooms.
.LP
The 
.I users
command gives a dump of who is playing, from where,
and what they are doing.
.LP
The 
.I status
command gives an overall summary of system usage
and the number of each item created.
.LP
The 
.I statme
command reports total free memory when using the
dlibs memory allocator. This is an option which vastly speeds
up the game boot time and improves its running performance on
machines with broken as designed memory allocators.