/* -*- LPC -*- */
/*
* $Id: upt_ime.c,v 1.14 2003/03/02 23:50:32 pinkfish Exp $
*/
#include <player.h>
inherit "/cmds/base";
mixed cmd(int brief) {
mapping u;
int r;
string str;
string output;
str = "/secure/finger"->time_elapsed_string(uptime());
#ifndef __DISTRIBUTION_LIB__
output = "A'Tuin has been paddling through space for "+
str + ".";
if (brief) {
write(output + "\n");
return 1;
}
output += " He (or as it may be, she) has been "
"performing "+ query_load_average()+".";
#else
output += mud_name() + " has been up for "+ str +
". The load average is " +
query_load_average()+".";
if (brief) {
write(output + "\n");
return 1;
}
#endif
u = rusage();
#ifndef __DISTRIBUTION_LIB__
output += sprintf(" This has taken %.2f%% of his (or her) energy and %.2fMB "
"of his (or her) mental capacity. ",
((u["stime"] + u["utime"]) / 10.0) / uptime(),
(memory_info() / 1024000.0));
#else
output += sprintf(" This has taken %.2f%% of the cpu and %.2fMB of "
"of memory. ",
((u["stime"] + u["utime"]) / 10.0) / uptime(),
(memory_info() / 1024000.0));
#endif
#ifndef __DISTRIBUTION_LIB__
r = "/obj/handlers/garbage"->query_next_reboot();
if (r == -1) {
output += "It is unknown when he (or she) will be "
"taking his (or her) next rest.";
} else if (r < 0 || find_object(OFFLER)) {
output += "He (or she) will be taking his (or her) next rest "
"any moment now.";
} else {
str = "";
if(r / (60*60*24)) {
str += (string) (r / (60*60*24)) + " day";
str += ((r /(60*60*24)) > 1 ? "s" : "");
}
if(r / ((60*60)) % 24) {
if(str != "") {
str += " and ";
}
str += (string)((r/(60*60))%24);
str += " hour" + (((r/(60*60))%24) > 1 ? "s" : "");
} else if(str == "") {
switch(r/ 60) {
case 0..7:
str = "less than 15 minutes";
break;
case 8..22:
str = "about a quarter of an hour";
break;
case 23..38:
str = "about half an hour";
break;
case 39..53:
str = "about three quarters of an hour";
break;
default:
str = "just under an hour";
break;
}
}
output += "He (or she) will be taking his (or her) next rest "
"in " + str + ".";
}
#endif
write(sprintf("%-=*s\n",
(int)this_player()->query_cols(), output));
return 1;
}
mixed* query_patterns() {
return ({ "", (: cmd(0) :),
"{brief|verbose}", (: cmd($4[0] == "brief") :) });
}