Preface
=======

The tracer is the wizard main debug tool. Unfortunately not many know how
to use it properly and end up writing inferior tools of their own. Make
sure you don't fall into that trap by reading this document carefully.

The tracer is available to everyone of wizard level or higher, this means
that apprentices, pilgrims and retired wizards can not use it as it gives
access to functionality they have no need of.

Command set
===========

The following commands are defined:

At		Perform a command in the environment of a player
Call		Call a function in an object
Cat		Cat the file linked to an object
Clean		Destruct all non-interactive objects in an object
Destruct	Destruct a specific object
Dump		Print information about an object
Ed		Ed the file linked to an object
Goto		Enter the inventory of an object
In		Perform a command in another object
Info		Get information (OBJ_S_WIZINFO) on an object
I(nventory)	List the inventory of an object
Items		List the pseudo-items (add_[cmd_]item) attached to an object
Light		Display the light information on an object
More		More the file linked to an object
Move		Move an object to a destination
Set		Set a tracer variable
Tail		Tail the file linked to an object

You can use the command "help" to get more information on them. To begin
with it suffices to say that all of them work on an object in the game. It
is very important that you know how to specify exactly which object you
intend to the tracer, or things might go _very_ wrong.

Object definition
=================

An object is anyting in the game. A player, an item or a room. As far as
the game is concerned it's all the same. However, to you, the wizard
there _are_ differences and the syntax describing the object varies.

The following syntax is possible:

name	This specifies the name of an object in your inventory or your
	environment.

"desc"	This specifies the short description of an object in your inventory
	or your environment.

path	This specifies a path to an object of any kind.

@name	This specifies the name of a player or monster anywhere in the
	game. Note that the tracer will find the name defined by a call
	to the efun 'set_living_name' and not the name set by 'set_name'.
	The player automatically has his name added with 'set_living_name',
	this is not true for monsters however.

*name	This specifies the name of a player and nothing else.

here	This specifies the environment of yourself, usually this is a room.

me	This specifies yourself, your player object.

#num	This specifies the object number 'num' in the scope you indicate.
	Beware of this command because if the order of object changes
	before you actually have given the command you might select the
	wrong object.

$var	This specifies the contents of a variable. $$ will give the last
	object used in this way.

$num	This specifies player number 'num' with the order defined as per
	the 'users()' efun. Actually, this is a fairly useless specification
	and it's only kept for backwards compatibility.

Lists of objects is possible and then you separate the objects by a ':'
if you mean the inventory of the previous object and a ':^' if you mean
the environment.

For example, let's list the contents of object number 2, a sack, in the 
room where you are standing. It can be done in several ways:

Dump here:#2 list
Dump me:^:#2 list
Dump sack list
Dump here:sack list

In the same way, let's look at the contents of a bag held by the player
'Edchakom'. The sack happens to be item number 5 in his inventory.

Dump *edchakom:sack list
Dump *edchakom:#5 list
