comparison arogue5/rip.c @ 65:7aff18a8d508

arogue5: implement logging.
author elwin
date Fri, 10 Aug 2012 21:17:14 +0000
parents 0ed67132cf10
children c49f7927b0fa
comparison
equal deleted inserted replaced
64:a98834ce7e04 65:7aff18a8d508
113 killer = killname(monst); 113 killer = killname(monst);
114 mvaddstr(17, 28-((strlen(killer)+1)/2), killer); 114 mvaddstr(17, 28-((strlen(killer)+1)/2), killer);
115 mvaddstr(18, 26, (sprintf(prbuf, "%4d", 1900+lt->tm_year), prbuf)); 115 mvaddstr(18, 26, (sprintf(prbuf, "%4d", 1900+lt->tm_year), prbuf));
116 move(LINES-1, 0); 116 move(LINES-1, 0);
117 refresh(); 117 refresh();
118 writelog(pstats.s_exp, KILLED, monst);
118 score(pstats.s_exp, KILLED, monst); 119 score(pstats.s_exp, KILLED, monst);
119 exit(0); 120 exit(0);
120 } 121 }
121 122
122 char * 123 char *
567 * Update the list file 568 * Update the list file
568 */ 569 */
569 scoreout(top_ten, outf); 570 scoreout(top_ten, outf);
570 fclose(outf); 571 fclose(outf);
571 } 572 }
572 573
574 void writelog(unsigned long amount, int flags, short monst) {
575 #ifdef LOGFILE
576 FILE *logfi;
577 char fate[100];
578 char *class;
579 struct linked_list *item;
580 struct object *obj;
581 char had_quest = '0';
582
583 if (waswizard)
584 return;
585 switch (player.t_ctype) {
586 case C_FIGHTER: class = "Fighter";
587 when C_MAGICIAN: class = "Magician";
588 when C_CLERIC: class = "Cleric";
589 when C_THIEF: class = "Thief";
590 otherwise: class = "Unknown";
591 }
592 for (item = pack; item != NULL; item = next(item)) {
593 obj = OBJPTR(item);
594 if (obj->o_type == RELIC && obj->o_which == quest_item)
595 had_quest = '1';
596 }
597 if (flags == KILLED) {
598 sprintf(fate, "killed by %s", killname(monst));
599 }
600 else if (flags == CHICKEN) {
601 sprintf(fate, "quit");
602 }
603 else if (flags == WINNER) {
604 sprintf(fate, "escaped");
605 }
606 else
607 return;
608
609 logfi = fopen(LOGFILE, "a");
610 if (logfi == NULL) {
611 perror(LOGFILE);
612 return;
613 }
614 fprintf(logfi, "%d %d %.20s %d %s %d %d %d %c %s\n", time(NULL), amount,
615 whoami, pstats.s_lvl, class, level, max_level, quest_item, had_quest,
616 fate);
617 fclose(logfi);
618 #endif
619 return;
620 }
621
573 /* 622 /*
574 * scorein: 623 * scorein:
575 * Convert a character string that has been translated from a 624 * Convert a character string that has been translated from a
576 * score file by scoreout() back to a score file structure. 625 * score file by scoreout() back to a score file structure.
577 */ 626 */
702 mvprintw(c - 'a' + 1, 0, "%c) %6d %s", c, worth, inv_name(obj, FALSE)); 751 mvprintw(c - 'a' + 1, 0, "%c) %6d %s", c, worth, inv_name(obj, FALSE));
703 purse += worth; 752 purse += worth;
704 } 753 }
705 mvprintw(c - 'a' + 1, 0," %5d Gold Pieces ", oldpurse); 754 mvprintw(c - 'a' + 1, 0," %5d Gold Pieces ", oldpurse);
706 refresh(); 755 refresh();
756 writelog(pstats.s_exp + (long) purse, WINNER, '\0');
707 score(pstats.s_exp + (long) purse, WINNER, '\0'); 757 score(pstats.s_exp + (long) purse, WINNER, '\0');
708 exit(0); 758 exit(0);
709 } 759 }
710 760
711 update(top_ten, amount, quest, whoami, flags, level, monst, ctype, system, login) 761 update(top_ten, amount, quest, whoami, flags, level, monst, ctype, system, login)