vampshifting via polymorph

When a vampire that's already in bat or fog form gets polymorphed,
sometimes take on base vampire form instead of always toggling to
fog or bat.
This commit is contained in:
PatR
2023-03-17 16:21:43 -07:00
parent 1c24f208f3
commit 0d9801e17f

View File

@@ -4325,7 +4325,7 @@ decide_to_shapeshift(struct monst *mon, int shiftflags)
}
static int
pickvampshape(struct monst* mon)
pickvampshape(struct monst *mon)
{
int mndx = mon->cham, wolfchance = 10;
/* avoid picking monsters with lowercase display symbols ('d' for wolf
@@ -4350,7 +4350,11 @@ pickvampshape(struct monst* mon)
break;
}
if (gm.mvitals[mndx].mvflags & G_GENOD)
/* return to base form if chosen poly target has been genocided
or randomly if already in an alternate form (to prevent always
switching back and forth between bat and fog) */
if ((gm.mvitals[mndx].mvflags & G_GENOD) != 0
|| (mon->data != &mons[mon->cham] && !rn2(4)))
return mon->cham;
return mndx;