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);
 }