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
+6 -2
View File
@@ -4325,7 +4325,7 @@ decide_to_shapeshift(struct monst *mon, int shiftflags)
} }
static int static int
pickvampshape(struct monst* mon) pickvampshape(struct monst *mon)
{ {
int mndx = mon->cham, wolfchance = 10; int mndx = mon->cham, wolfchance = 10;
/* avoid picking monsters with lowercase display symbols ('d' for wolf /* avoid picking monsters with lowercase display symbols ('d' for wolf
@@ -4350,7 +4350,11 @@ pickvampshape(struct monst* mon)
break; 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 mon->cham;
return mndx; return mndx;