/*    /cmds/creator/clean.c
 *    From the Dead Souls V Object Library
 *    Cleans out the inventory of an object, defaulting to this room
 *    created by Valodin@Dead Souls 930101
 *    Version: @(#) clean.c 1.2@(#)
 *    Last modified: 96/10/06
 */

#include <lib.h>
#include <message_class.h>

inherit LIB_DAEMON;

mixed cmd(string args) {
    object array obs, items, users;
    object ob;

    if( !args || args == "" ) {
	ob = environment(previous_object());
    }
    else {
	ob = to_object(args);
    }
    if( !ob ) {
	return "No " + args + " found.";
    }
    previous_object()->eventPrint(sprintf("Cleaning %O", ob), MSG_SYSTEM);
    obs = deep_inventory(ob);
    users = filter(obs, (: userp :));
    items = obs - users;
    foreach(object user in users) {
	object tmp = user;

	while( tmp = environment(tmp) ) {
	    items -= ({ tmp });
	}
    }
    foreach(object item in items) {
	if( item ) {
	    item->eventDestruct();
	}
    }
    return 1;
}

string GetHelp() {
    return ("Syntax: <clean>\n"
      "        <clean OBJECT>\n\n"
      "This command destroys all objects in the inventory of a "
      "specified object.  It skips any item that has a user somewhere "
      "in its deep inventory.");

}
