// /bin/user/_biography.c
// from the Nightmare mudlib
// gives a player's biography
// created by Descartes of Borg 30 march 1993
#include <daemons.h>
#include <std.h>
inherit DAEMON;
int cmd_biography(string str) {
int *pk;
int birth, byear, i, max;
string *kills, *quests;
mixed *deaths, *oh, *divorced;
string borg, tmp;
mapping minis;
string *lines;
borg = (string)this_player()->query_short();
byear = year(birth = (int)this_player()->query_birthday()) - 18;
borg += "\nYou were born "+day(birth)+", "+date(birth)+" "+month(birth)+
" "+(byear ? (byear<0 ? (-byear)+" BN.\n" : byear+" NM.\n") : " of the null year.\n");
if(!(oh = (mixed *)this_player()->query_current_marriage()))
borg += "You are currently single.\n\n";
else if(!oh[1])
borg += "You married "+capitalize(oh[0])+" on a forgotten date.\n\n";
else
borg += "You married "+capitalize(oh[0])+" on "+month(oh[1])+" "+
date(oh[1])+", "+year(oh[1])+".\n\n";
if(!sizeof(minis = (mapping)this_player()->query_mini_quest_map()))
borg += "You have no meaningful accomplishments.\n";
else {
borg += "You have been rewarded for these great deeds:\n";
i = sizeof(quests = keys(minis));
while(i--) {
borg += date(minis[quests[i]][0])+" "+month(minis[quests[i]][0])+
" "+year(minis[quests[i]][0])+" NM:\n"+minis[quests[i]][1];
}
borg += "\n";
}
if(!(pk = (int *)this_player()->query_kills()) || !sizeof(pk))
borg += "\nNo kills.\n";
else {
for(i=0, kills = ({}), max = sizeof(pk); i<max; i++) {
if(pk[i] < 0) continue;
kills += ({ (string)PLAYER_D->query_monster(pk[i]) });
}
borg += "\nYou have brought doom to these beings:\n";
borg += format_page(kills, 4);
}
if(!(deaths=(mixed *)this_player()->query_deaths()) ||
!(max = sizeof(deaths)))
borg += "\nYou have never experienced the pain of death.\n\n";
else {
borg += "You have been brought into the grasp of death by:\n"+
arrange_string("Enemy", 15)+arrange_string("Date", 20)+
arrange_string("Enemy", 15)+"Date\n";
for(i=0; i<max; i+=2) {
borg += arrange_string(capitalize(deaths[i][0]), 15);
tmp = date(deaths[i][1])+" "+month(deaths[i][1])+
" "+year(deaths[i][1])+" NM.";
borg += arrange_string(tmp, 20);
if(i+1 < max) {
borg += arrange_string(capitalize(deaths[i+1][0]), 15);
tmp = date(deaths[i+1][1])+" "+month(deaths[i+1][1])+
" "+year(deaths[i+1][1])+" NM.";
borg += tmp;
}
borg += "\n";
}
}
this_player()->more(explode(borg, "\n"));
return 1;
}
int help()
{
write( @EndText
Syntax: biography
Effect: gives some details of your character's life.
See also: score
EndText
);
return 1;
}