/*    /lib/post_office.c
 *    from the Dead Souls Object Library
 *    an inheritable post office
 *    created by Descartes of Borg 951007
 */


#include <lib.h>
#include <objects.h>
#include <post.h>
#include "include/post_office.h"

inherit LIB_ROOM;

static void create() {
    room::create();
}

mixed CanMail(object who, string args) {
    if( !interactive(who) ) return 0;
    if( GetTown() != (string)who->GetTown() )
	return "Any mail you might have will be at your home post office.";
    return 1;
}

mixed eventMail(object who, string args) {
    object ob;

    if( !(ob = new(OBJ_POST)) ) {
	who->eventPrint("Failed to load postal object!");
	return 1;
    }
    if( !((int)ob->eventMove(who)) ) {
	who->eventPrint("You can't seem to carry the postal object.");
	return 1;
    }
    ob->start_post(args);
    return 1;
}

int CanReceive(object ob) {
    if( !ob && !(ob = previous_object()) ) return 0;
    if( living(ob) && !interactive(ob) ) return 0;
    else return room::CanReceive(ob);
}

int eventReleaseObject(object foo) {
    object ob;

    if( !(ob = previous_object()) ) return room::eventReleaseObject();
    if( !room::eventReleaseObject() ) return 0;
    if( (ob = present(POSTAL_ID, ob)) ) ob->eventDestruct();
    return 1;
}
