inherit "/std/room/basic_room";
nosave private mapping delete_list;
nosave private int destroyed;
void setup() {
  set_short( "rubbish room" );
  set_long( "This is the rubbish room.  Anything coming in here will be "+
            "destroyed five seconds later.\n" );
  set_keep_room_loaded(1);
  delete_list = ([ ]);
  set_heart_beat(1);
  destroyed = 0;
}
string long(string word, int dark) {
  if(query_verb() == "scry" )
    return "empty space.";
  
  return ::long(word, dark);
}
int no_init() { return 1; }
/**
 * @ignore yes
 * Every 2 seconds try to destroy some stuff.
 */
void heart_beat() {
  object ob;
  int i;
  i = 0;
  foreach(ob in all_inventory()) {
    if(!delete_list[ob])
      delete_list[ob] = time();
    else if(delete_list[ob] < time() - 4) {
      destroyed++;
      map_delete(delete_list, ob);
      destruct(ob);
      reset_eval_cost();
    }
  }
}
/**
 * @ignore yes
 * This just cleans up anything that got left behind. If a callout got lost
 * or went wrong or something this'll make sure our rubbish room is clean.
 */
void reset() {
  object *inventory;
   
  set_heart_beat(1);
  inventory = filter( all_inventory( this_object() ), 
                      (: !interactive( $1 ) :) );
    
  map(inventory, (: $1 && destruct($1) :));
}
mixed stats() {
  return ::stats() + ({
    ({ "destroyed", destroyed }),
  });
}
object *query_list() {
  return keys(delete_list);
}