/**
* Pub counter for the pub_shop.c inheritable. It will automatically clear
* away any empty items on it that have the property "pub item" on them every
* 10 seconds.
* @author Lemming
* @started 28/10/1999
* @changed Changed to clear things more smartly, so that we wouldn't end up
* with counters bursting with half-full glasses - Sandoz, 20 April, 2003.
*/
inherit "/std/surface";
private object my_pub;
private void clear_pub_item( object item );
/** @ignore */
void create() {
::create();
set_name("counter");
set_short("counter");
set_long("The counter seems to be where you should leave glasses and "
"plates to be cleared away.\n");
reset_get();
// So that we could send an event to the pub room,
// or let the pub room itself clean the counter.
if( function_exists("clear_pub_item", PO ) ||
function_exists("event_clear_pub_item", PO ) )
my_pub = PO;
} /* create() */
/** @ignore */
private void clear_pub_item( object item ) {
if( ENV(item) != TO )
return;
if( my_pub ) {
if( my_pub->clear_pub_item(item) )
return;
my_pub->event_clear_pub_item(item);
}
item->move("/room/rubbish");
} /* clear_item() */
/** @ignore */
void event_enter( object ob, string mess, object from ) {
if( ob->query_property("pub item") || ob->query_liquid() )
call_out( (: clear_pub_item :), 10, ob );
} /* event_enter() */
/** @ignore yes */
object query_my_pub() { return my_pub; }