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

DESCRIPTION
        Clone a new object from definition <name>, or alternatively from
        the object <template>. In both cases, the new object is given
        an unique name and returned.

        The original, called blueprint, used for cloning, should not be
        used in the system, just for cloning. The cloned objects
        contain only the data but the blueprint also the function code.
        The blueprint is the one without a unique number at the end of
        the object's name. The clone_object() function never
        returns a blue print.

        If the blueprint exists and has a heart_beat(), clone_object()
        turns it off.

        Note that the pathname must be complete, which means there are no
        relative paths allowed.

        If strict euids are enforced, the cloning object must have
        a non-zero euid.


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



EXAMPLES
        // Clone a torch (filename in non-compat format)
        object torch;
        torch = clone_object("/obj/torch");

        // Clone two keys (filename in 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");
        }


HISTORY
        Modified in LDMud 3.2.6 to take an object as argument.

SEE ALSO
        blueprint(E), clonep(E), destruct(E), clones(E), load_name(E),
        load_object(E), move_object(E), uids(C), program_name(E)
