Mercurial > hg > early-roguelike
diff rogue4/rip.c @ 26:ea7372f5d314
rogue4: add logging all games
author | edwarj4 |
---|---|
date | Thu, 26 Nov 2009 03:02:13 +0000 |
parents | 4967c46f1320 |
children | c68598659da6 |
line wrap: on
line diff
--- a/rogue4/rip.c Tue Nov 24 13:04:43 2009 +0000 +++ b/rogue4/rip.c Thu Nov 26 03:02:13 2009 +0000 @@ -236,6 +236,63 @@ fclose(outf); } +void writelog(int amount, int flags, char monst) +{ + FILE *logfi; + char logmessage[160], ltemp[80]; + char *killer; + if (waswizard) + return; +#ifdef LOGFILE + if (lfd >= 0) + logfi = fdopen(lfd, "a"); + else + return; + if (logfi == NULL) + return; + /* otherwise writing should work */ + sprintf(logmessage, "%d %d %.20s %d ", time(NULL), amount, whoami, + pstats.s_lvl); + if (flags == 0) /* died */ + { + strcat(logmessage, "killed by "); + killer = killname(monst, TRUE); + strcat(logmessage, killer); + if (amulet) + sprintf(ltemp, " on level %d [max %d] with the Amulet\n", + level, max_level); + else + sprintf(ltemp, " on level %d\n", level); + strcat(logmessage, ltemp); + } + else if (flags == 1) /* quit */ + { + if (amulet) + sprintf(ltemp, "quit on level %d [max %d] with the Amulet\n", + level, max_level); + else + sprintf(ltemp, "quit on level %d\n", level); + strcat(logmessage, ltemp); + } + else if (flags == 2) /* won */ + { + sprintf(ltemp, "escaped with the Amulet [deepest level :%d]\n", + max_level); + strcat(logmessage, ltemp); + } + else + { + fclose(logfi); + return; + } + + /* then write */ + fprintf(logfi, "%s", logmessage); + fclose(logfi); +#endif + return; +} + /* * death: * Do something really fun when he dies @@ -271,6 +328,7 @@ mvaddstr(18, 26, prbuf); move(LINES-1, 0); refresh(); + writelog(purse, 0, monst); score(purse, 0, monst); /* Make sure the output gets through */ printf("[Press return to exit]\n"); @@ -390,6 +448,7 @@ } mvprintw(c - 'a' + 1, 0," %5d Gold Pieces ", oldpurse); refresh(); + writelog(purse, 2, 0); score(purse, 2, 0); exit(0); }