#include <lib.h>
#include <daemons.h>
#include <modules.h>
#include <rooms.h>
#include <commands.h>
inherit LIB_VERB;
static void create() {
verb::create();
SetVerb("dest");
SetRules("OBS","STR");
SetErrorMessage("dest what?");
SetHelp("Syntax: <dest OBJ>\n\n"
"Destroy an object.\n"
"\nSee also: zap");
}
mixed can_dest_obj(string str) {
if(!creatorp(this_player())) return "This command is only available to builders and creators.";
else return 1;
}
mixed can_dest_str(){
return 0;
}
mixed do_dest_obj(object ob){
string name;
if(base_name(ob) == LIB_DUMMY) {
write(capitalize(ob->GetShort())+" isn't a normal destable item. It remains in place.");
return 1;
}
if(archp(ob) && !archp(this_player())){
write("You can't dest an admin.");
tell_player(ob, this_player()->GetName()+" just tried to dest you.");
return 1;
}
if(!living(ob)) name = ob->GetShort();
else name = ob->GetName();
write("You dest "+name+".");
say( this_player()->GetMessage( "dest", ob ) );
ob->eventDestruct();
if(ob) destruct(ob);
return 1;
}
mixed do_dest_obs(object *obs) {
foreach(object ob in obs){
if(!interactive(ob)) do_dest_obj(ob);
}
write("Desting complete.");
return 1;
}
mixed do_dest_str(string str){
object *objects;
if(!objects = findobs(str)){
write("No such thing was found.");
return 1;
}
if(sizeof(objects) != 1){
write("The return list is ambiguous. Nothing was dested.");
return 1;
}
objects[0]->eventDestruct();
if(objects[0]) destruct(objects[0]);
if(objects[0]) write(file_name(objects[0])+" was not destructed.");
else write("Desting complete.");
return 1;
}