diff -pruN slashem-0.0.7E7F1-official-release/dat/opthelp slashem-0.0.7E7F1-showborn/dat/opthelp --- slashem-0.0.7E7F1-official-release/dat/opthelp 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-showborn/dat/opthelp 2005-10-27 20:23:00.000000000 +0200 @@ -63,6 +63,10 @@ news print any news from game admi Boolean option if MFLOPPY was set at compile time: checkspace check free disk space before writing files to disk [TRUE] +Boolean option if SHOW_BORN was set at compile time: +showborn show numbers of created monsters after the number + vanquished [FALSE] + Boolean option if EXP_ON_BOTL was set at compile time: showexp display your accumulated experience points [FALSE] diff -pruN slashem-0.0.7E7F1-official-release/dat/wizhelp slashem-0.0.7E7F1-showborn/dat/wizhelp --- slashem-0.0.7E7F1-official-release/dat/wizhelp 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-showborn/dat/wizhelp 2005-10-27 20:23:00.000000000 +0200 @@ -19,6 +19,7 @@ Debug-Mode Quick Reference: #panic == panic test #polyself == polymorph self #seenv == show seen vectors +#showkills == show numbers of monsters killed #stats == show memory statistics #timeout == look at timeout queue #vision == show vision array diff -pruN slashem-0.0.7E7F1-official-release/doc/Guidebook.mn slashem-0.0.7E7F1-showborn/doc/Guidebook.mn --- slashem-0.0.7E7F1-official-release/doc/Guidebook.mn 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-showborn/doc/Guidebook.mn 2005-10-27 20:23:00.000000000 +0200 @@ -2206,6 +2206,10 @@ Prevent you from (knowingly) attacking y Control what parts of the score list you are shown at the end (ex. ``scores:5 top scores/4 around my score/own scores''). Only the first letter of each category (`t', `a', or `o') is necessary. +.lp showborn +When the game ends, show the number of each monster created +in the "Vanquished creatures" list, if it differs from the +number of those monsters killed. .lp showexp Show your accumulated experience points on bottom line (default off). .lp showrace diff -pruN slashem-0.0.7E7F1-official-release/doc/Guidebook.tex slashem-0.0.7E7F1-showborn/doc/Guidebook.tex --- slashem-0.0.7E7F1-official-release/doc/Guidebook.tex 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-showborn/doc/Guidebook.tex 2005-10-27 20:23:52.000000000 +0200 @@ -3018,6 +3018,13 @@ Control what parts of the score list you letter of each category (`{\tt t}', `{\tt a}', or `{\tt o}') is necessary. %.lp +\item[\ib{showborn}] +When the game ends, show the number of each monster created +in the ``Vanquished creatures'' list, if it differs from the +number of those monsters killed. +%.lp + + \item[\ib{showexp}] Show your accumulated experience points on bottom line (default off). %.lp diff -pruN slashem-0.0.7E7F1-official-release/include/flag.h slashem-0.0.7E7F1-showborn/include/flag.h --- slashem-0.0.7E7F1-official-release/include/flag.h 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-showborn/include/flag.h 2005-10-27 20:23:03.000000000 +0200 @@ -239,6 +239,9 @@ struct instance_flags { boolean lan_mail; /* mail is initialized */ boolean lan_mail_fetched; /* mail is awaiting display */ #endif +#ifdef SHOW_BORN + boolean show_born; /* show numbers of created monsters */ +#endif /* * Window capability support. */ diff -pruN slashem-0.0.7E7F1-official-release/src/cmd.c slashem-0.0.7E7F1-showborn/src/cmd.c --- slashem-0.0.7E7F1-official-release/src/cmd.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-showborn/src/cmd.c 2005-10-27 20:30:15.000000000 +0200 @@ -141,6 +141,9 @@ STATIC_PTR int NDECL(wiz_show_seenv); STATIC_PTR int NDECL(wiz_show_vision); STATIC_PTR int NDECL(wiz_mon_polycontrol); STATIC_PTR int NDECL(wiz_show_wmodes); +#ifdef SHOW_BORN +extern void FDECL(list_vanquished, (int, BOOLEAN_P)); /* showborn patch */ +#endif /* SHOW_BORN */ #if defined(__BORLANDC__) && !defined(_WIN32) extern void FDECL(show_borlandc_stats, (winid)); #endif @@ -2281,6 +2284,7 @@ struct ext_func_tab extcmdlist[] = { #endif {(char *)0, (char *)0, donull, TRUE}, {(char *)0, (char *)0, donull, TRUE}, + {(char *)0, (char *)0, donull, TRUE}, /* showkills (showborn patch) */ {(char *)0, (char *)0, donull, TRUE}, {(char *)0, (char *)0, donull, TRUE}, {(char *)0, (char *)0, donull, TRUE}, diff -pruN slashem-0.0.7E7F1-official-release/src/end.c slashem-0.0.7E7F1-showborn/src/end.c --- slashem-0.0.7E7F1-official-release/src/end.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-showborn/src/end.c 2005-10-27 20:23:03.000000000 +0200 @@ -1084,6 +1084,11 @@ boolean ask; else Sprintf(buf, "%d %s", nkilled, makeplural(mons[i].mname)); +#ifdef SHOW_BORN + if (iflags.show_born && nkilled != mvitals[i].born) + Sprintf(buf + strlen(buf), " (%d created)", + (int) mvitals[i].born); +#endif } putstr(klwin, 0, buf); } @@ -1129,37 +1134,93 @@ char defquery; boolean ask; { register int i; - int ngenocided; + int ngenocided=0; +#ifdef SHOW_EXTINCT + int nextincted=0; +#endif char c; winid klwin; char buf[BUFSZ]; + /* get totals first */ +#ifdef SHOW_EXTINCT + for (i = LOW_PM; i < NUMMONS; i++) { + if (mvitals[i].mvflags & G_GENOD) + ngenocided++; + else if ( (mvitals[i].mvflags & G_GONE) && !(mons[i].geno & G_UNIQ) ) + nextincted++; + } +#else ngenocided = num_genocides(); +#endif /* genocided species list */ - if (ngenocided != 0) { + if (ngenocided != 0 +#ifdef SHOW_EXTINCT + || nextincted != 0 +#endif + ) { +#ifdef SHOW_EXTINCT + if (nextincted != 0) + c = ask ? + yn_function("Do you want a list of species genocided or extinct?", + ynqchars, defquery) : defquery; + else +#endif c = ask ? yn_function("Do you want a list of species genocided?", ynqchars, defquery) : defquery; if (c == 'q') done_stopprint++; if (c == 'y') { klwin = create_nhwindow(NHW_MENU); - putstr(klwin, 0, "Genocided species:"); +#ifdef SHOW_EXTINCT + Sprintf(buf, "Genocided or extinct species:"); +#else + Sprintf(buf, "Genocided species:"); +#endif + putstr(klwin, 0, buf); putstr(klwin, 0, ""); +#ifdef DUMP_LOG + if (want_dump) dump("", buf); +#endif for (i = LOW_PM; i < NUMMONS; i++) +#ifdef SHOW_EXTINCT + if (mvitals[i].mvflags & G_GONE && !(mons[i].geno & G_UNIQ) ){ +#else if (mvitals[i].mvflags & G_GENOD) { +#endif if ((mons[i].geno & G_UNIQ) && i != PM_HIGH_PRIEST) Sprintf(buf, "%s%s", !type_is_pname(&mons[i]) ? "" : "the ", mons[i].mname); else Strcpy(buf, makeplural(mons[i].mname)); +#ifdef SHOW_EXTINCT + if( !(mvitals[i].mvflags & G_GENOD) ) + Strcat(buf, " (extinct)"); +#endif putstr(klwin, 0, buf); } putstr(klwin, 0, ""); +#ifdef SHOW_EXTINCT + if (ngenocided>0) { +#endif Sprintf(buf, "%d species genocided.", ngenocided); putstr(klwin, 0, buf); +#ifdef DUMP_LOG + if (want_dump) dump("", buf); +#endif +#ifdef SHOW_EXTINCT + } + if (nextincted>0) { + Sprintf(buf, "%d species extinct.", nextincted); + putstr(klwin, 0, buf); +#ifdef DUMP_LOG + if (want_dump) dump("", buf); +#endif + } +#endif /* SHOW_EXTINCT */ display_nhwindow(klwin, TRUE); destroy_nhwindow(klwin); diff -pruN slashem-0.0.7E7F1-official-release/src/options.c slashem-0.0.7E7F1-showborn/src/options.c --- slashem-0.0.7E7F1-official-release/src/options.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-showborn/src/options.c 2005-10-27 20:23:03.000000000 +0200 @@ -196,6 +196,9 @@ static struct Bool_Opt #else {"sanity_check", (boolean *)0, FALSE, SET_IN_FILE}, #endif +#ifdef SHOW_BORN + {"showborn", &iflags.show_born, FALSE, SET_IN_GAME}, +#endif #ifdef EXP_ON_BOTL {"showexp", &flags.showexp, FALSE, SET_IN_GAME}, #else