2.5 The Tracer tool

The built-in wiztool called the Tracer tool is perhaps your
absolutly best friend in trying to figure out what's going on inside an
object that already is loaded into the game. It allows you to call
specific function in any object, regardless of location, list
inventories and even move objects around. In fact, it's so useful that
on Genesis any other wiztool is forbidden. The reason being that you
should learn how to use this one and not waste time on making
anything inferior.

Some people complain that it's a bit difficult to use, but that's just
because they didn't bother to read the manual. In any case, I'm going to
give a more thorough lesson here and just maybe you won't have to bother
with the in-game manual, which admittedly isn't the easiest of reads.

Please notice that all tracer tool commands are upper-case. This is to
distinguish them from the ordinary commands, some of which have the same
name. Also notice that since the tracer tool is intended for use by
working people, it's only available to full wizards.

To begin with, let's look at how the tracer identifies an object:

`name'

This specifies the name of an object in your inventory or your
environment, simply the object name. Beware that many objects share
names (e.g. 'human', 'sword' etc).

`"desc"'

This specifies the short description of an object in your inventory or
your environment. Usually more exact than just the name.

`path'

This specifies a file path to an object. If you want a specific
indiviual item, you add the clone number. For instance not just
~Ansalon/guild/society/obj/nametag but specifically exactly
~Ansalon/guild/society/obj/nametag#22144 and no other.

The non-specific path identifies the master object, of course.

`@name'

This specifies the name of a player or a living (a monster)
anywhere in the game. Please notice that the tracer will find the name
as registerd by a call of the efun set_living_name() (described
earlier) and not the name set by set_name() in the object
itself. A player is automatically added to the list of living
objects.

`*name'

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

`here'

This specifies the environment of yourself, usually you are standing
in a room of some kind.

`me'

This specifies yourself, your player object.

`#num'

This specifies the object number 'num' in the scope you indicate. If for
example you know that the sword you are carrying is the third
object, the reference would be '#3', simply. Please beware that object
order may change without warning. If for example someone gives you
something just before you type the command, object '#3' will no longer
be the one you thought it was. Instead make extensive use of tracer
variables (explained in the command Set) to void this problem.

`$var'

This specifies the contents of a tracer variable (explained later in
the command Set).

Objects often exist in some sort of environment. Sometimes in the same
place as another object, sometimes inside an object, sometimes the
object is enveloping another. In order to give a relation of the type
"the second object inside the teddybear in the same room as I am
standing in", you give a list of object specifications separated by a
:. The environment of an object is specified with a caret
(:^).

For example, the previous description would come out as
me:^:teddybear:#2. This really isn't very complicated,
you just build the path based on an object that you are certain
you know which it is.

Another example: "the sword stored in a bag held by the player Adam":
*adam:bag:sword.