diff --git a/urogue/main.c b/urogue/main.c index fdb9932..aed6caf 100644 --- a/urogue/main.c +++ b/urogue/main.c @@ -28,8 +28,10 @@ #define SAVEDIR "." #define SCOREFILE "/var/local/games/roguelike/urogue.scr" +#define LOGFILE "/var/local/games/roguelike/urogue.log" FILE *fd_score = NULL; +FILE *file_log = NULL; /* Command line options */ @@ -107,6 +109,10 @@ main(int argc, char *argv[]) if (fd_score == NULL) fd_score = fopen(score_file, "a+"); +#ifdef LOGFILE + file_log = fopen(LOGFILE, "a+"); +#endif + if (!use_savedir) md_normaluser(); diff --git a/urogue/rip.c b/urogue/rip.c index f64e271..4748f76 100644 --- a/urogue/rip.c +++ b/urogue/rip.c @@ -53,6 +53,8 @@ static const char *rip[] = 0 }; +void writelog(long amount, int lvl, int flags, int monst); + /* death() Do something really fun when he dies @@ -205,6 +207,9 @@ score(long amount, int lvl, int flags, int monst) /*ARGSUSED*/ char *packend; + if (flags != SCOREIT) + writelog(amount, lvl, flags, monst); + if (flags != WINNER && flags != TOTAL && flags != SCOREIT) { if (flags == CHICKEN) @@ -385,6 +390,31 @@ score(long amount, int lvl, int flags, int monst) /*ARGSUSED*/ } } +void +writelog(long amount, int lvl, int flags, int monst) +{ + char fate[80]; + if (file_log == NULL) + return; + if (flags == KILLED) { + strcpy(fate, "killed by "); + killname(monst, fate + 10); + } + else if (flags == CHICKEN) { + strcpy(fate, "quit"); + } + else if (flags == WINNER || flags == TOTAL) { + strcpy(fate, "escaped"); + } + else + return; + fprintf(file_log, "%d %d %s %d %s %d %d %d %s\n", time(NULL), amount, + whoami, lvl, which_class(player.t_ctype), level, max_level, + has_artifact, fate); + fclose(file_log); + return; +} + void total_winner(void) { diff --git a/urogue/rogue.h b/urogue/rogue.h index 8f6d64a..c8be605 100644 --- a/urogue/rogue.h +++ b/urogue/rogue.h @@ -1380,6 +1380,7 @@ extern char *ws_made[]; /* What sticks are made of */ /* main.c */ extern FILE *fd_score; +extern FILE *file_log; extern int summoned; extern coord dta; extern int main(int argc, char *argv[]);