VORLAEUFIG
SYNOPSIS
        object present_clone(string str [, object env] );
        object present_clone(object obj [, object env] );

BESCHREIBUNG
        Diese Efun durchsucht das Inventar von <env> nach einem Objekt mit
        einem bestimmten Blueprint . Wird <env> nicht angegeben, wird in
        this_object() gesucht. Der Blueprint kann entweder mit seinem Namen
        <str> angegeben werden, oder als Blueprint des Objekts <obj>. Gesucht
        wird in beiden Faellen aufgrund von load_name().
        Wird kein passendes Objekt gefunden, liefert die Efun 0 zurueck.

        Fuer Driver im Plain Modus beginnt der Name in jedem Fall mit '/', im
        Compat Modus nicht.

BEISPIELE
        Angenommen, das Objekt <env> enthalte die Objekte /items/money#8,
        /std/weapon#9, /std/weapon#12 und /obj/key in der angegeben
        Reihenfolge.

        +--------------------------------------------------+---------------+
        | Funktion                                         | Liefert       |
        +--------------------------------------------------+---------------+
        | present_clone("/items/money", env)               | /items/money#8|
        | present_clone("/std/weapon#12", env)             | /std/weapon#9 |
        | present_clone(find_object("/items/money#1"), env)| /items/money#8|
        | present_clone("/obj/key#18", env)                | /obj/key      |
        +--------------------------------------------------+---------------+

        Fuer Driver im Compat Modus liefert die Funktion keine '/' am Anfang.

AENDERUNGEN
        Eingefuehrt in 3.2.7.

ANMERKUNG
        Im Unterschied zu present() sucht present_clone() niemals in der
        Umgebung von <env>.

SIEHE AUCH
        load_name(E), present(E)
