efun: present
SYNOPSIS:
object present(string str)
object present(string str, int n)
object present(string str, object env)
object present(string str, int n, object env)
object present(object ob)
object present(object ob, object env)
DESCRIPTION:
This efun checks if an object is present in a given environment.
The object is identified by id <str> or by an object <ob>. This
latter form of the efun can be used as a fast way to test for the
presence of a known object.
When searching objects by id, the efun by default returns the first
object found matching the id. In order to search for other than the
first object, a number can be specified either directly as the
argument <n>, or implicetely inside the <str> in the form "<id>
<n>".
By default, the efun searches first in the inventory of
this_object(), then in its environment. However, if <env> is given,
the efun searches just inside <env>.
When searching both inventory and environment of this_object(),
the numbering is applied linear over both spaces (see example).
The driver identifies objects by calling the lfun id() in each
object.
EXAMPLES:
present("chest");
--> returns the first 'chest' object in this object.
present("chest 2")
--> returns the second 'chest' object in this object.
present("chest 2", 1)
--> returns the first 'chest 2' object in this object.
Assume there is one "chest" inside the current object, and
two in its environment:
present("chest", 1) -> returns the chest inside
present("chest", 2) -> returns the first chest outside
present("chest", 3) -> returns the second chest outside
A typical 2.4.5-implementation of the "do <id> <n>" command style
is:
void init () { add_action ("open_chest", "open"); }
int open_chest (string str) {
if (present (str) != this_object ())
return 0; /* Not this chest */
...
}
HISTORY:
LDMud 3.2.11/3.3.610 introduced the (str, n) argument form.
LDMud 3.3.713 modified the <n> search behaviour so that the
numbering is applied over both inventory and environment
together. Before, the numbering was individual in each
space, leading to situations where low-numbered objects in the
environment were hidden by those in the inventory.
SEE ALSO:
move_object(E), environment(E), this_object(E), present_clone(E),
id(A), init(A)
UNItopia (mudadm@UNItopia.de)