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 examples).
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)
|