diff --git a/arogue7/command.c b/arogue7/command.c index 091b5d4..c98969f 100644 --- a/arogue7/command.c +++ b/arogue7/command.c @@ -602,6 +602,7 @@ int sig; clear(); move(lines-1, 0); draw(stdscr); + writelog(pstats.s_exp + (long) purse, CHICKEN, 0); score(pstats.s_exp + (long) purse, CHICKEN, 0); #ifdef PC7300 endhardwin(); diff --git a/arogue7/rip.c b/arogue7/rip.c index 28cfb94..697beae 100644 --- a/arogue7/rip.c +++ b/arogue7/rip.c @@ -17,6 +17,8 @@ #define EDITSCORE 2 /* Edit the current score file */ #define ADDSCORE 3 /* Add a new score */ +#define LOGFILE "arogue7.log" + #define NAMELEN 80 /* @@ -138,6 +140,7 @@ register short monst; mvaddstr(18, 26, (sprintf(prbuf, "%4d", 1900+lt->tm_year), prbuf)); move(lines-1, 0); refresh(); + writelog(pstats.s_exp, KILLED, monst); score(pstats.s_exp, KILLED, monst); endwin(); #ifdef PC7300 @@ -199,7 +202,49 @@ register short monst; return (deaths[i].name); } - +/* Writes an entry in the log file */ + +void +writelog(unsigned long amount, int flags, short monst) +{ + FILE *logwriter; + char had_quest = '0'; + char fate[LINELEN]; + struct linked_list *item; + struct object *obj; +#ifdef LOGFILE + if (waswizard) + return; + /* Check for quest item */ + for (item = pack; item != NULL; item = next(item)) { + obj = OBJPTR(item); + if (obj->o_type == RELIC && obj->o_which == quest_item) + had_quest = '1'; + } + /* Describe what happened */ + if (flags == KILLED) { + snprintf(fate, LINELEN, "killed by %s", killname(monst)); + } + else if (flags == CHICKEN) { + strcpy(fate, "quit"); + } + else if (flags == WINNER) { + strcpy(fate, "escaped"); + } + else + return; + /* Open and write */ + logwriter = fopen(LOGFILE, "a"); + if (logwriter == NULL) + return; + fprintf(logwriter, "%d %d %s %d %s %d %d %d %c %s\n", time(NULL), amount, + whoami, pstats.s_lvl, char_class[char_type].name, level, max_level, + quest_item, had_quest, fate); + fclose(logwriter); +#endif + return; +} + /* * score -- figure score and post it. */ @@ -823,6 +868,7 @@ total_winner() } mvprintw(c - 'a' + 1, 0," %5d Gold Pieces ", oldpurse); refresh(); + writelog(pstats.s_exp + (long) purse, WINNER, '\0'); score(pstats.s_exp + (long) purse, WINNER, '\0'); endwin(); #ifdef PC7300 diff --git a/arogue7/rogue.h b/arogue7/rogue.h index 8adf1e9..b4b3c0f 100644 --- a/arogue7/rogue.h +++ b/arogue7/rogue.h @@ -1150,6 +1150,7 @@ void genmonsters(), add_constitution(), add_charisma(), res_intelligence(), res_strength(int), res_wisdom(), res_dexterity(), res_constitution(), res_charisma(); +void writelog(unsigned long amount, int flags, short monst); #ifdef CHECKTIME int checkout();