inherit ROOM_OBJ;
object floor, sign;
string log_bing, chair;
string reform_message(string str);
void setup() {
set_short("meeting room");
set_long("A large oak table dominates this room. There are some heavy "
"ornate looking candle sticks in the center of the table. The table "
"is surrounded by large expensive looking teak chairs, at one end of "
"the table are some larger more expensive looking ones. There is a "
"small hammer sitting in the middle of the room. There is a small "
"sign on the wall.\n");
set_light(70);
add_item("oak table", "A large heavy looking oak table. It was built to "
"last and looks very old - you can tell by all the worn marks at the "
"places around the table where people sit.");
add_item("teak chair", "The chairs are overly ornate and obviously in a "
"very good condition for their age. The large chairs at the end are "
"obviously not well used (you can tell, all the dust).");
add_item("candle stick", "The candle sticks are made of silver, however "
"if you try and take them, you notice they are attached to the table "
"somehow. The candles seemed to have been carved into the shape of "
"a small chicken holding a torch.");
add_item( ({"hammer", "gavel"}), "The gavel looks like ones fo those "
"things so common in meeting rooms. You could bang it around a "
"little maybe, it might help if you had it though.");
log_bing = 0;
sign = add_sign("A small sign with not much written on it.\n",
"There is no current chair of the meeting.\n");
add_exit("common", "/d/admin/common", "path" );
} /* setup() */
void reset() {
if( !floor ) {
floor = clone_object(OBJECT_OBJ);
floor->set_name("floor");
floor->set_short("floor");
floor->set_determinate("the ");
floor->set_long("This is the floor of the meeting. It gives you the "
"right to speak during the meeting. Please give this to the "
"next person to speak after you have finished.\n");
floor->move(TO);
}
} /* reset() */
int do_appoint( object ob ) {
if( chair && (string)TP->query_name() != chair ) {
add_failed_mess("The chair has already been appointed.\n");
return 0;
}
chair = ob->query_name();
if( ob == TP ) {
tell_room( TO, TP->the_short()+" has just appointed "+TP->HIM+"self "
"as the chair of the meeting.\n", ob );
tell_object( TP, "You have just appointed yourself as the chair of "
"the meeting.\n");
} else {
tell_room( TO, TP->the_short()+" has just appointed "+
ob->the_short()+" as the chair of the meeting.\n", ob );
tell_object( TP, "You have just appointed "+
ob->the_short()+" as the chair of the meeting.\n");
tell_object( ob, TP->the_short()+" has just appointed you as the "
"chair of the meeting.\n");
}
sign->set_read_mess("The chair of the meeting is "+CAP(chair)+".");
return 1;
} /* do_appoint() */
int do_bang() {
if( TP->query_name() != chair ) {
add_failed_mess("Only the chair can bang the gavel.\n");
return 0;
}
add_succeeded_mess("$N bang$s the gavel loudly and yell$s: STOP! STOP!\n");
return 1;
} /* do_bang() */
int do_recover() {
reset();
floor->move(TP);
add_succeeded_mess( ({"You have recovered the floor.\n", "$N has "
"recovered the floor.\n"}) );
return 1;
} /* do_recover() */
int do_log(string str) {
if( log_bing && !str ) {
tell_object( TP, "Stopped logging.\n");
log_bing = str;
return 1;
}
if( !str ) {
add_failed_mess("Syntax: 'log <file_name>'\n"+
" 'log' by itself to stop logging.\n");
return 0;
}
if( log_bing )
write("Stopped logging to "+log_bing+" and started logging to "+
str+".\n");
else
write("Started logging to "+str+".\n");
log_bing = str;
return 1;
} /* do_log() */
void init() {
::init();
if( interactive(TP) && ( lordp(TP) || TP->query_name() == chair ) ) {
add_command("appoint", "<indirect:living'chair'>",
(: do_appoint($1[0]) :) );
add_command("bang", "gavel");
add_command("recover", "floor"); // recovers the floor.
add_command("log", "", (: do_log(0) :) );
add_command("log", "[to] <string'file_name'>", (: do_log($4[0]) :) );
}
} /* init() */
void event_person_say( object ob, string start, string rest ) {
if( log_bing )
log_file( log_bing, reform_message(start+rest)+"\n");
} /* event_person_say() */
void event_say( object ob, string rest ) {
if( log_bing )
log_file( log_bing, reform_message(rest)+"\n");
} /* event_say() */
void event_soul( object ob, string rest ) {
if( log_bing )
log_file( log_bing, reform_message(rest)+"\n");
} /* event_soul() */
void dest_me() {
if( floor )
floor->dest_me();
::dest_me();
} /* dest_me() */
string reform_message( string str ) {
return PLAYER_OBJ->convert_message(str);
} /* reform_message() */