-+-+-+-+-+-+-+-+ START OF PART 4 -+-+-+-+-+-+-+-+ X fillroom(OSTAIRSUP,0); X X/* make the random objects in the maze */ X X fillmroom(rund(3),OBOOK,j); `20 X fillmroom(rund(3),OALTAR,0); X fillmroom(rund(3),OSTATUE,0); `20 X fillmroom(rund(3),OPIT,0); X fillmroom(rund(3),OFOUNTAIN,0); `20 X fillmroom( rnd(3)-2,OIVTELETRAP,0); X fillmroom(rund(2),OTHRONE,0); `20 X fillmroom(rund(2),OMIRROR,0); X fillmroom(rund(2),OTRAPARROWIV,0); `20 X fillmroom( rnd(3)-2,OIVDARTRAP,0); X fillmroom(rund(3),OCOOKIE,0); X if (j==1)`20 X fillmroom(1,OCHEST,j); X else`20 X fillmroom(rund(2),OCHEST,j); X if ((j != MAXLEVEL-1) && (j != MAXLEVEL+MAXVLEVEL-1)) X fillmroom(rund(2),OIVTRAPDOOR,0); X if (j<=10) X `7B X fillmroom((rund(2)),ODIAMOND,rnd(10*j+1)+10); X fillmroom(rund(2),ORUBY,rnd(6*j+1)+6); X fillmroom(rund(2),OEMERALD,rnd(4*j+1)+4); X fillmroom(rund(2),OSAPPHIRE,rnd(3*j+1)+2); X `7D X for (i=0; i3) X `7B X froom(3,OSWORD,3); /* sunsword + 3 */ X froom(5,O2SWORD,rnd(4)); /* a two handed sword */ X froom(3,OBELT,4); /* belt of striking */ X froom(3,OENERGYRING,3); /* energy ring */ X froom(4,OPLATE,5); /* platemail + 5 */ X froom(3,OCLEVERRING,1+rnd(2)); /* ring of cleverness */ X `7D X `7D X `7D X X/* X subroutine to fill in a number of objects of the same kind X */ X Xstatic fillmroom(n,what,arg) X int n,arg; X char what; X `7B X register int i; X for (i=0; i MAXX-2) x=1; if (x < 1) x=MAXX-2; X if (y > MAXY-2) y=1; if (y < 1) y=MAXY-2; X `7D X item`5Bx`5D`5By`5D=what; iarg`5Bx`5D`5By`5D=arg; X `7D X X/* X subroutine to put monsters into an empty room without walls or other X monsters X */ Xfillmonst(what) X char what; X `7B X register int x,y,trys; X for (trys=5; trys>0; --trys) /* max # of creation attempts */ X `7B X x=rnd(MAXX-2); y=rnd(MAXY-2); X if ((item`5Bx`5D`5By`5D==0) && (mitem`5Bx`5D`5By`5D==0) && ((playerx!= Vx) `7C`7C (playery!=y))) X `7B X mitem`5Bx`5D`5By`5D = what; know`5Bx`5D`5By`5D &= `7EKNOWHERE; X hitp`5Bx`5D`5By`5D = monster`5Bwhat`5D.hitpoints; return(0); X `7D X `7D X return(-1); /* creation failure */ X `7D X X/* X creates an entire set of monsters for a level X must be done when entering a new level X if sethp(1) then wipe out old monsters else leave them there X */ Xstatic sethp(flg) X int flg; X `7B X register int i,j; X if (flg) for (i=0; i>1); else j = (level>>1) + 1; X for (i=0; i