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/room";
#include "mail.h"


void create()
{
  set_short("the post office");
  set_long("You're in the local post office.\n"+
	"Commands are: read, mail and from.\n" );
  add_property("silence_please");
}


void send_mail(string to,string subject,string body)
{
  object o,oo;
  string from;
  mixed *mail,*tmp;
  

  
  mail=({this_player()->query_real_name(),to,time(),subject,body});

  to=lower_case(to);
  to=replace(to,","," ");
  to=replace(to,"&"," ");

  foreach((to/" ")-({" "}),to)
  {
    if(!stringp(db_get("/save/players",to))
    {
      write("No player called "+to+".\n");
    }else{
      write("Sending mail to "+to+".\n");
      if(o=find_player(to))
      {
        o->catch_tell("You have new mail.\n");
        if((oo=present("mail_reader",o)) && file_name(oo)=="obj/mail_reader")
        {
          oo->put_mail(mail);
          continue;
        }        
      }
      if(stringp(tmp=db_get(SAVEFILE,to)))
      {
        tmp=decode_value(tmp);
      }else{
        tmp=({0});
      }
      tmp[0]++; /* you have unread mail now */
      tmp+=({mail});
      db_set(SAVEFILE,to,code_value(tmp));
    }
  }
}

int check_for_new_mail(string name)
{
  mixed tmp;
  if(stringp(tmp=db_get(SAVEFILE,name)))
  {
    tmp=decode_value(tmp);
    if(sizeof(tmp)>1) if(tmp[0]) return tmp[0];
  }
}

void init()
{
  ::init();
  move_object(clone_object("/obj/mail_reader"),this_player());
}

void exit()
{
  object o;
  /* I'm not root for nothing you know... */
  if(o=present("mail_reader",this_player()) efun::destruct(o);
}