diff --git a/src/minion.c b/src/minion.c index b21901a26..0cec5c083 100644 --- a/src/minion.c +++ b/src/minion.c @@ -609,7 +609,12 @@ dlord(aligntyp atyp) for (tryct = !In_endgame(&u.uz) ? 20 : 0; tryct > 0; --tryct) { pm = rn1(PM_YEENOGHU + 1 - PM_JUIBLEX, PM_JUIBLEX); - if (!(gm.mvitals[pm].mvflags & G_GONE) + /* This previously checked G_GONE (as dprince still does), but Juiblex + * is weird in that he splits, and in order to split he doesn't get + * G_EXTINCT set. Instead, check the born counter (which also works fine + * for Yeenoghu or any other archfiend since the outcome is the same - + * if they have already been generated, they can't be summoned. */ + if (!(gm.mvitals[pm].born) && (atyp == A_NONE || sgn(mons[pm].maligntyp) == sgn(atyp))) return pm; }