SYNOPSIS
        object clone_object(string name)
        object clone_object(object template)

BESCHREIBUNG
        Clont ein neues Objekt aus der Definiton <name> oder alternativ aus
        dem Objekt <template>. In beiden Faellen wird dem Clon ein
        individueller Name zugeordnet, dann wird der Clon zurueck gegeben.

        Das Original, Blueprint genannt, wird nur fuer das Clonen verwendet
        und sollte deshalb nicht im Spiel genutzt werden. Die geclonten
        Objekte enthalten nur Daten, der Blueprint hingegen auch den
        Funktionscode.

        Den Blueprint erkennt man daran, dass er keine Nummer im Objektnamen
        traegt. clone_object() liefert niemals einen Blueprint zurueck.

        Wenn der Blueprint existiert und einen heart_beat() aufweist, schaltet
        clone_object() diesen aus.

        Die Pfadangabe muss komplett sein. Relative Pfade sind nicht gestattet.
        Wenn strikte EUIDs gefordert werden, muss das clonende Objekt eine
        EUID != 0 haben.


        -- Variable Initialization --

        If variables are initialized with __INIT(), blueprints and clones are
        initialized alike.

        If variables are not initialized with __INIT(), however, the variables
        of clones will be initialized from the _current_ values of the
        blueprint. This behaviour may be surprising at first, but can come in
        quite handy.

        Variables without explicit initializers are always initialized to 0.


        -- Variablen Initialisierung --

        Werden die Variablen durch __INIT() initialisert, erhalten Blueprints
        und Klone stets dieselben Werte.

        Wird allerdings __INIT() nicht verwendet, werden die Werte fuer die
        Klonvariable aus den _aktuellen_ Variablen der Blueprint kopiert.
        Diese Verhalten mag anfangs ueberraschen, ist aber sehr nuetzlich.

        Variablen ohne explizite Initialisierung sind hiervon unbetroffen und
        werden stets auf 0 gesetzt.


BEISPIELE
        // Clone eine Fackel (Name des Files nicht im Compat Format)
        object fackel;
        fackel = clone_object("/obj/fackel");

        // Clone zwei Schluessel (Name des Files im Compat Format)
        object key1, key2;
        key1 = clone_object(load_object("obj/key"));
        key2 = clone_object(key1);

        // Create a specialized weapons blueprint (only without __INIT()!).
        --- std/weapon.c: --- 
        int weapon_class = 1;

        --- broadsword.c: ---
        inherit "/std/weapon";

        int create() {
            weapon_class = 2;
            replace_program("/std/weapon");
        }


GESCHICHTE
        Modifiziert in LDMud 3.2.6: es werden auch Objekte als Argument
            akzeptiert.

SIEHE AUCH
        blueprint(E), clonep(E), destruct(E), clones(E), load_name(E),
        load_object(E), move_object(E), uids(C), program_name(E)
