add #genocided command

Comparable to #vanquished, be able to view info normally available
during end of game disclosure while the game is still in progress.
The new #genocided command lists all genocided and extincted types
of monsters.  Unlike #vanquished, there aren't any sorting choices.

Potential future enhancement:  provide a way to view the genocided
list at the "what do you want to genocide?" prompt.
This commit is contained in:
PatR
2023-02-11 11:35:06 -08:00
parent df18c96840
commit 6fd0047784
6 changed files with 37 additions and 2 deletions
+1
View File
@@ -124,6 +124,7 @@ M-C conduct view optional challenges
M-d dip dip an object into something M-d dip dip an object into something
M-e enhance show weapon and spell skills, can improve them if eligible M-e enhance show weapon and spell skills, can improve them if eligible
M-f force force a lock M-f force force a lock
M-g genocided list genocided and extinct monster types, if any
M-i invoke invoke an object's special powers M-i invoke invoke an object's special powers
M-j jump jump to another location M-j jump jump to another location
M-l loot loot a box on the floor M-l loot loot a box on the floor
+6
View File
@@ -1298,6 +1298,10 @@ Default key is \(oqf\(cq.
Force a lock. Force a lock.
Autocompletes. Autocompletes.
Default key is \(oqM-f\(cq. Default key is \(oqM-f\(cq.
.lp #genocided
List any monster types which have been genocided or become extinct.
Autocompletes.
Default key is \(oqM-g\(cq.
.lp "#glance " .lp "#glance "
Show what type of thing a map symbol corresponds to. Show what type of thing a map symbol corresponds to.
Default key is \(oq;\(cq. Default key is \(oq;\(cq.
@@ -1867,6 +1871,8 @@ option is enabled)
#enhance #enhance
.lp M-f .lp M-f
#force #force
.lp M-g
#genocided
.lp M-i .lp M-i
#invoke #invoke
.lp M-j .lp M-j
+8
View File
@@ -1407,6 +1407,11 @@ Default key is `{\tt f}'.
\item[\tb{\#force}] \item[\tb{\#force}]
Force a lock. Autocompletes. Default key is `{\tt M-f}'. Force a lock. Autocompletes. Default key is `{\tt M-f}'.
%.lp %.lp
\item[\tb{\#genocided}]
List any monster types which have been genocided or become extinct.
Autocompletes.
Default key is `{\tt M-g}'.
%.lp
\item[\tb{\#glance}] \item[\tb{\#glance}]
Show what type of thing a map symbol corresponds to. Default key is `{\tt ;}'. Show what type of thing a map symbol corresponds to. Default key is `{\tt ;}'.
%.lp %.lp
@@ -2022,6 +2027,9 @@ equivalent is used for another command, so the three key combination
\item[\tb{M-f}] \item[\tb{M-f}]
{\tt\#force} {\tt\#force}
%.lp %.lp
\item[\tb{M-g}]
{\tt\#genocided}
%.lp
\item[\tb{M-i}] \item[\tb{M-i}]
{\tt\#invoke} {\tt\#invoke}
%.lp %.lp
+1
View File
@@ -1105,6 +1105,7 @@ extern int doborn(void);
extern void list_vanquished(char, boolean); extern void list_vanquished(char, boolean);
extern int num_genocides(void); extern int num_genocides(void);
extern void list_genocided(char, boolean); extern void list_genocided(char, boolean);
extern int dogenocided(void);
extern const char *align_str(aligntyp); extern const char *align_str(aligntyp);
extern char *piousness(boolean, const char *); extern char *piousness(boolean, const char *);
extern void mstatusline(struct monst *); extern void mstatusline(struct monst *);
+4 -1
View File
@@ -43,7 +43,7 @@ extern int dofire(void); /**/
extern int dothrow(void); /**/ extern int dothrow(void); /**/
extern int doeat(void); /**/ extern int doeat(void); /**/
extern int done2(void); /**/ extern int done2(void); /**/
extern int vanquished(void); /**/ extern int dovanquished(void); /**/
extern int doengrave(void); /**/ extern int doengrave(void); /**/
extern int dopickup(void); /**/ extern int dopickup(void); /**/
extern int ddoinv(void); /**/ extern int ddoinv(void); /**/
@@ -2567,6 +2567,9 @@ struct ext_func_tab extcmdlist[] = {
doforce, AUTOCOMPLETE, NULL }, doforce, AUTOCOMPLETE, NULL },
{ ';', "glance", "show what type of thing a map symbol corresponds to", { ';', "glance", "show what type of thing a map symbol corresponds to",
doquickwhatis, IFBURIED | GENERALCMD, NULL }, doquickwhatis, IFBURIED | GENERALCMD, NULL },
{ M('g'), "genocided",
"list monsters that have been genocided or become extinct",
dogenocided, IFBURIED | AUTOCOMPLETE, NULL },
{ '?', "help", "give a help message", { '?', "help", "give a help message",
dohelp, IFBURIED | GENERALCMD, NULL }, dohelp, IFBURIED | GENERALCMD, NULL },
{ '\0', "herecmdmenu", "show menu of commands you can do here", { '\0', "herecmdmenu", "show menu of commands you can do here",
+17 -1
View File
@@ -2826,7 +2826,7 @@ list_vanquished(char defquery, boolean ask)
* which needs putstr() and past tense. * which needs putstr() and past tense.
*/ */
} else if (!gp.program_state.gameover) { } else if (!gp.program_state.gameover) {
/* #dovanquished rather than final disclosure, so pline() is ok */ /* #vanquished rather than final disclosure, so pline() is ok */
pline("No creatures have been vanquished."); pline("No creatures have been vanquished.");
#ifdef DUMPLOG #ifdef DUMPLOG
} else if (dumping) { } else if (dumping) {
@@ -2852,6 +2852,7 @@ num_genocides(void)
return n; return n;
} }
/* return a count of the number of extinct species */
static int static int
num_extinct(void) num_extinct(void)
{ {
@@ -2866,6 +2867,8 @@ num_extinct(void)
return n; return n;
} }
/* show genocided and extinct monster types for final disclosure/dumplog
or for the #genocided command */
void void
list_genocided(char defquery, boolean ask) list_genocided(char defquery, boolean ask)
{ {
@@ -2933,6 +2936,11 @@ list_genocided(char defquery, boolean ask)
display_nhwindow(klwin, TRUE); display_nhwindow(klwin, TRUE);
destroy_nhwindow(klwin); destroy_nhwindow(klwin);
} }
/* See the comment for similar code near the end of list_vanquished(). */
} else if (!gp.program_state.gameover) {
/* #genocided rather than final disclosure, so pline() is ok */
pline("No creatures have been genocided or become extinct.");
#ifdef DUMPLOG #ifdef DUMPLOG
} else if (dumping) { } else if (dumping) {
putstr(0, 0, "No species were genocided or became extinct."); putstr(0, 0, "No species were genocided or became extinct.");
@@ -2940,6 +2948,14 @@ list_genocided(char defquery, boolean ask)
} }
} }
/* M-g - #genocided command */
int
dogenocided(void)
{
list_genocided('y', FALSE);
return ECMD_OK;
}
/* /*
* align_str(), piousness(), mstatusline() and ustatusline() once resided * align_str(), piousness(), mstatusline() and ustatusline() once resided
* in pline.c, then got moved to priest.c just to be out of there. They * in pline.c, then got moved to priest.c just to be out of there. They