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/
inherit "/std/object";
string name;   /* This is the capitalized name */
string msgin="enters.";
string msgout="leaves DIR.";
static object body;
int brief_mode;
int local_weight;

int is_living() { return 1; }
int is_player() { return 0; }
int is_npc() { return 0; }
string query_name() { return name; }
void catch_tell(string s) { }

void emote(string s)
{
  tell_room(environment(),query_name()+" "+s+"\n",({this_object()}));
}

void create(string s)
{
  ::create(s);
  enable_commands();
}

int do_look(string s)
{
  int perc, light;
  object o;
  string sl;
  if(body) perc=(int)body->get_tot_add_prop("perception");
  light=(int)environment()->query_add_prop("light");
  if(s && s!="" && !(o=present(s,environment())) && light>=perc)
  {
    foreach(all_inventory(environment()),o)
    {
      if(sl=(string)o->get_item(s))
      {
	catch_tell(sl+"\n");
	return 1;
      }
    }
  }
  if(!o) o=environment();
  catch_tell( (string)o->long(s,light*perc/100) );
  return 1;
}

void move_player(string dir,mixed where,string leavehow,string enterhow)
{
  if(!leavehow) leavehow=replace(msgout,"DIR",dir);
  if(!enterhow) enterhow=msgin;
  emote(leavehow);
  move_object((object)where);
  emote(enterhow);
  if(is_player())
  {
    if(brief_mode)
      catch_tell((string)environment()->display_short());
    else
      do_look(0);
  }
}

int hit_player(int str,int pene,int orientation)
{
  
}

int add_weight(int t)
{
  if(local_weight+t>(int)body->query_add_prop("str"))
  {
    return 0;
  }else{
    local_weight+=t;
    return t;
  }
}