lpc4/lib/
lpc4/lib/doc/efun/
lpc4/lib/doc/lfun/
lpc4/lib/doc/operators/
lpc4/lib/doc/simul_efuns/
lpc4/lib/doc/types/
lpc4/lib/etc/
lpc4/lib/include/
lpc4/lib/include/arpa/
lpc4/lib/obj/d/
lpc4/lib/save/
lpc4/lib/secure/
lpc4/lib/std/
lpc4/lib/std/living/
/* simul efun */

int num;

object clone_object(string s)
{
  (s+"#"+num)->a;
  return find_object(o);
}

string file_name(object o)
{
  return hash_name(o);
}

object _destruct(object o)
{
  o->__selfdestruct();
  return o;
}

object destruct(object o)
{
  if(environment(o))
  {
    environment(o)->add_weight(-o->query_weight());
    while(first_inventory(o))
      first_inventory(o)->__move(environment(o));
  }
  return _destruct(o);
}

string query_verb()
{
  return (query_verb()/"%")[0];
}

varargs mixed call_other(object o,string fun,
			 mixed a,
			 mixed b,
			 mixed c,
			 mixed d,
			 mixed e,
			 mixed f,
			 mixed g,
			 mixed h,
			 mixed i,
			 mixed j,
			 mixed k,
			 mixed l,
			 mixed m)
{
  return get_function(o,fun)(a,b,c,d,e,f,g,h,i,j,k,l,m);
}

int save_object(string file)
{
  file+=".o";
  rm(file);
  write_file(previous_object()->__dump_data());
  return 1;
}


/* inherit */
#pragma save_types
static int restore_object(string file)
{
  file+=".o";
  restore_object(read_file(file));
}

void __selfdestruct() { destruct(); }
void __move(object o) { move_object(o); }
string __dump_data() { return save_object(); }

varargs string add_action(string fun,string v,int flag)
{
  if(flag)
  {
    add_action(v+"%s",get_function(this_object(),fun));
  }else{
    add_action(v+" %s",get_function(this_object(),fun));
  }
  return fun;
}

/* include */
#pragma unpragma_strict_types
inherit "/inherit/compat";