ignored that count and the whole stack was affected
wizmakemap didn't account for unique monsters and didn't correct monster
birth counts
+generate objects (eg. statues) with genocided or extinct monster classes
+ in special levels, if requested
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
{
struct permonst *ptr = &mons[mndx];
- if (g.mvitals[mndx].mvflags & mvflagsmask)
+ if ((g.mvitals[mndx].mvflags & mvflagsmask) && !(genomask & G_IGNORE))
return FALSE;
if (ptr->geno & genomask)
return FALSE;
{
register int first, last, num = 0;
int k, nums[SPECIAL_PM + 1]; /* +1: insurance for final return value */
+ int ignore = (spc & G_IGNORE);
int maxmlev, mask = (G_NOGEN | G_UNIQ) & ~spc;
(void) memset((genericptr_t) nums, 0, sizeof nums);
for (last = first; last < SPECIAL_PM && mons[last].mlet == class; last++) {
if (atyp != A_NONE && sgn(mons[last].maligntyp) != sgn(atyp))
continue;
- if (mk_gen_ok(last, G_GONE, mask)) {
+ if (mk_gen_ok(last, G_GONE, mask|ignore)) {
/* consider it; don't reject a toostrong() monster if we
don't have anything yet (num==0) or if it is the same
(or lower) difficulty as preceding candidate (non-zero
if (montype) {
if (strlen(montype) == 1
&& def_char_to_monclass(*montype) != MAXMCLASSES) {
- pm = mkclass(def_char_to_monclass(*montype), G_NOGEN);
+ pm = mkclass(def_char_to_monclass(*montype), G_NOGEN|G_IGNORE);
} else {
for (i = LOW_PM; i < NUMMONS; i++)
if (!strcmpi(mons[i].mname, montype)) {