Mercurial > hg > early-roguelike
diff arogue5/rip.c @ 65:7aff18a8d508
arogue5: implement logging.
author | elwin |
---|---|
date | Fri, 10 Aug 2012 21:17:14 +0000 |
parents | 0ed67132cf10 |
children | c49f7927b0fa |
line wrap: on
line diff
--- a/arogue5/rip.c Fri Aug 10 05:16:08 2012 +0000 +++ b/arogue5/rip.c Fri Aug 10 21:17:14 2012 +0000 @@ -115,6 +115,7 @@ 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); exit(0); } @@ -569,7 +570,55 @@ scoreout(top_ten, outf); fclose(outf); } - + +void writelog(unsigned long amount, int flags, short monst) { +#ifdef LOGFILE + FILE *logfi; + char fate[100]; + char *class; + struct linked_list *item; + struct object *obj; + char had_quest = '0'; + + if (waswizard) + return; + switch (player.t_ctype) { + case C_FIGHTER: class = "Fighter"; + when C_MAGICIAN: class = "Magician"; + when C_CLERIC: class = "Cleric"; + when C_THIEF: class = "Thief"; + otherwise: class = "Unknown"; + } + for (item = pack; item != NULL; item = next(item)) { + obj = OBJPTR(item); + if (obj->o_type == RELIC && obj->o_which == quest_item) + had_quest = '1'; + } + if (flags == KILLED) { + sprintf(fate, "killed by %s", killname(monst)); + } + else if (flags == CHICKEN) { + sprintf(fate, "quit"); + } + else if (flags == WINNER) { + sprintf(fate, "escaped"); + } + else + return; + + logfi = fopen(LOGFILE, "a"); + if (logfi == NULL) { + perror(LOGFILE); + return; + } + fprintf(logfi, "%d %d %.20s %d %s %d %d %d %c %s\n", time(NULL), amount, + whoami, pstats.s_lvl, class, level, max_level, quest_item, had_quest, + fate); + fclose(logfi); +#endif + return; +} + /* * scorein: * Convert a character string that has been translated from a @@ -704,6 +753,7 @@ } 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'); exit(0); }