/**
* This command makes an exact duplicate of an object.
*/
#include <creator.h>
inherit COMMAND_BASE;
/** @ignore yes */
private int cmd( object *obs ) {
string file;
object ob, new_ob;
mixed static_arg, dynamic_arg;
foreach( ob in obs ) {
if( !objectp(ob) )
continue;
if( !clonep(ob) ) {
write("Failed to duplicate "+ob->short()+" (not a clone).\n");
continue;
}
file = base_name(ob);
static_arg = ob->query_static_auto_load();
dynamic_arg = ob->query_dynamic_auto_load();
new_ob = clone_object(file);
if( new_ob ) {
if( static_arg )
new_ob->init_static_arg( copy(static_arg) );
if( dynamic_arg )
new_ob->init_dynamic_arg( copy(dynamic_arg) );
}
if( !new_ob ) {
write("Failed to duplicate "+ob->short()+" for some reason.\n");
continue;
}
if( !new_ob->move(TP) ) {
write( new_ob->short()+" duplicated and put in you.\n");
continue;
}
if( !new_ob->move(ENV(TP)) ) {
write( new_ob->short()+" duplicated and put in here.\n");
continue;
}
if( !new_ob->move("/room/broken") ) {
write( new_ob->short()+" duplicated and put in /room/broken.\n");
continue;
}
write("Couldn't find any place to put "+new_ob->short()+" in!\n");
new_ob->move("/room/rubbish");
}
return 1;
} /* cmd() */
/** @ignore yes */
mixed query_patterns() {
return ({"<indirect:wiz-present>", (: cmd($1) :) });
} /* query_patterns() */