number_pad:-1 to swap function of y and z keys; z to move NW, y to zap wands
display spell retention information in the spell menu
tame ghouls can eat old eggs
+new effect for reading a scroll of light while confused
Platform- and/or Interface-Specific New Features
E void FDECL(newmonhp, (struct monst *,int));
E struct mextra *NDECL(newmextra);
E struct monst *FDECL(makemon, (struct permonst *,int,int,int));
-E boolean FDECL(create_critters, (int,struct permonst *));
+E boolean FDECL(create_critters, (int,struct permonst *,BOOLEAN_P));
E struct permonst *NDECL(rndmonst);
E void FDECL(reset_rndmonst, (int));
E struct permonst *FDECL(mkclass, (CHAR_P,int));
/* used for wand/scroll/spell of create monster */
/* returns TRUE iff you know monsters have been created */
boolean
-create_critters(cnt, mptr)
+create_critters(cnt, mptr, neverask)
int cnt;
struct permonst *mptr; /* usually null; used for confused reading */
+boolean neverask;
{
coord c;
int x, y;
struct monst *mon;
boolean known = FALSE;
#ifdef WIZARD
- boolean ask = wizard;
+ boolean ask = (wizard && !neverask);
#endif
while (cnt--) {
case SPE_CREATE_MONSTER:
if (create_critters(1 + ((confused || scursed) ? 12 : 0) +
((sblessed || rn2(73)) ? 0 : rnd(4)),
- confused ? &mons[PM_ACID_BLOB] : (struct permonst *)0))
+ confused ? &mons[PM_ACID_BLOB] : (struct permonst *)0,FALSE))
known = TRUE;
/* no need to flush monsters; we ask for identification only if the
* monsters are not visible
else do_genocide(!scursed | (2 * !!Confusion));
break;
case SCR_LIGHT:
- if(!Blind) known = TRUE;
- litroom(!confused && !scursed, sobj);
+ if (!confused || rn2(5)) {
+ if(!Blind) known = TRUE;
+ litroom(!confused && !sobj->cursed, sobj);
+ } else {
+ /* could be scroll of create monster, don't set known ...*/
+ (void) create_critters(1, !sobj->cursed ?
+ &mons[PM_YELLOW_LIGHT] :
+ &mons[PM_BLACK_LIGHT], TRUE);
+ }
break;
case SCR_TELEPORTATION:
if (confused || scursed) {
break;
case WAN_CREATE_MONSTER:
known = create_critters(rn2(23) ? 1 : rn1(7,2),
- (struct permonst *)0);
+ (struct permonst *)0, FALSE);
break;
case WAN_WISHING:
known = TRUE;