inherit COMMAND_BASE;
private string idle_time(object person) {
int hours, mins, secs;
string s, m, h;
secs = query_idle(person);
mins = secs / 60;
secs %= 60;
hours = mins / 60;
mins %= 60;
s = ("0"+secs)[<2..<1];
m = ("0"+mins)[<2..<1];
if ( !hours ) {
return " (idle: "+m+":"+s+")";
}
h = ("0"+hours)[<2..<1];
return " (idle: "+h+":"+m+":"+s+")";
} /* idle_time() */
mixed cmd( ) {
int i;
string *members;
object person;
members = (string *)DOMAIN_H->query_creators("liaison");
i = sizeof( members );
while ( i-- ) {
person = find_player( members[ i ] );
if (!person) {
members = delete(members, i, 1);
} else {
if ( !interactive( person ) ) {
members = delete( members, i, 1 );
} else {
members[ i ] = capitalize( members[ i ] );
switch( person->query_invis() ) {
case 0:
break;
case 1:
members[ i ] = sprintf( "(%s)", members[ i ] );
break;
case 2:
members[ i ] = sprintf( "({%s})", members[ i ] );
break;
default:
members[ i ] = sprintf( "([%s])", members[ i ] );
break;
}
members[ i ] = capitalize( members[ i ] );
if (person->query_busy()) {
members[ i ] += " (busy)";
}
if ( query_idle( person ) > 120 ) {
members[ i ] += idle_time( person );
}
}
}
}
if ( !sizeof( members ) ) {
add_failed_mess( "There are no Liaison creators currently logged on.\n" );
return 0;
}
if ( sizeof( members ) > 1 ) {
write( "Liaison creators logged on are "+
query_multiple_short( members ) +".\n" );
} else {
write( "The only Liaison creator logged on is "+ members[ 0 ] +".\n" );
}
return 1;
} /* cmd() */
mixed *query_patterns() {
return ({ "", (: cmd() :) });
} /* query_patterns() */