-+-+-+-+-+-+-+-+ START OF PART 6 -+-+-+-+-+-+-+-+ X/* leprechaun */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* nymph */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* quasit */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X X/* rust monster */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 4,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* zombie */ `7B 0,0,0,8,0,4, 0,0,0,0,0,0,0,0, 0,0,0,0,0,4,0, V 4,0,0,0,0,4, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* assassin bug */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* bugbear */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* hell hound */ `7B 0,6,0,0,0,0, 12,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X X/* ice lizard */ `7B 0,0,0,0,0,0, 11,0,0,0,0,0,0,0, 0,15,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* centaur */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* troll */ `7B 0,7,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, V 4,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* yeti */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,15,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* white dragon */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,14,0, 0,15,0,0,0,0,0, V 4,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X X/* elf */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,14,5, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/*gelatinous cube */ `7B 0,0,0,0,0,0, 2,0,0,0,0,0,0,0, 0,0,0,0,0,4,0, V 0,0,0,0,0,4, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* metamorph */ `7B 0,13,0,0,0,0, 2,0,0,0,0,0,0,0, 0,0,0,0,0,4,0, V 4,0,0,0,0,4, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* vortex */ `7B 0,13,0,0,0,10, 1,0,0,0,0,0,0,0, 0,0,0,0,0,4,0, V 4,0,0,0,4,4, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* ziller */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X X/* violet fungi */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* wraith */ `7B 0,0,0,8,0,4, 0,0,0,0,0,0,0,0, 0,0,0,0,0,4,0, V 4,0,0,0,0,4, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* forvalaka */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* lama nobe */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* osequip */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X X/* rothe */ `7B 0,7,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* xorn */ `7B 0,7,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, V 4,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* vampire */ `7B 0,0,0,8,0,4, 0,0,0,0,0,0,0,0, 0,0,0,0,0,4,0, V 0,0,0,0,0,4, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/*invisible staker*/ `7B 0,0,0,0,0,0, 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* poltergeist */ `7B 0,13,0,8,0,4, 1,0,0,0,0,0,0,0, 0,4,0,0,0,4,0, V 4,0,0,0,4,4, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X X/* disenchantress */ `7B 0,0,0,8,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/*shambling mound */ `7B 0,0,0,0,0,10, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* yellow mold */ `7B 0,0,0,8,0,0, 1,0,0,0,0,0,4,0, 0,0,0,0,0,4,0, V 0,0,0,0,0,4, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* umber hulk */ `7B 0,7,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* gnome king */ `7B 0,7,0,0,3,0, 0,0,0,0,0,0,0,5, 0,0,9,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X X/* mimic */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* water lord */ `7B 0,13,0,8,3,4, 1,0,0,0,0,0,0,0, 0,0,9,0,0,4,0, V 0,0,0,0,16,4, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* bronze dragon */ `7B 0,7,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* green dragon */ `7B 0,7,0,0,0,0, 11,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* purple worm */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X X/* xvart */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* spirit naga */ `7B 0,13,0,8,3,4, 1,0,0,0,0,0,0,5, 0,4,9,0,0,4,0, V 4,0,0,0,4,4, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* silver dragon */ `7B 0,6,0,9,0,0, 12,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/*platinum dragon */ `7B 0,7,0,9,0,0, 11,0,0,0,0,0,14,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* green urchin */ `7B 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X/* red dragon */ `7B 0,6,0,0,0,0, 12,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, V 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 `7D, X X/* p m d s c s w s e h c c p i b c p c h c v d V l d g f f s h s t m s g s w a p */ X/* r l e l h s e t n e b r h n a l l a a k p r V i r l l g c l t e f p e u t l e */ X/* o e x e m p b r l l l e a v l d y n s l r y V t l o o r a d p l i h n m w t r */ X X/* demon lord */ `7B 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, V 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 `7D, X/* demon lord */ `7B 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, V 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 `7D, X/* demon lord */ `7B 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, V 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 `7D, X/* demon lord */ `7B 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, V 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 `7D, X/* demon lord */ `7B 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, V 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 `7D, X/* demon lord */ `7B 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, V 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 `7D, X/* demon lord */ `7B 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, V 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 `7D, X/* demon prince */ `7B 0,7,0,4,3,9, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, V 4,0,0,0,4,4, 4,0,0,0,4, 9,0,0,0,0,0 `7D X X `7D; X Xchar *spelmes`5B`5D = `7B "", X/* 1 */ "the web had no effect on the %s", X/* 2 */ "the %s changed shape to avoid the web", X/* 3 */ "the %s isn't afraid of you", X/* 4 */ "the %s isn't affected", X/* 5 */ "the %s can see you with his infravision", X/* 6 */ "the %s vaporizes your missile", X/* 7 */ "your missile bounces off the %s", X/* 8 */ "the %s doesn't sleep", X/* 9 */ "the %s resists", X/* 10 */ "the %s can't hear the noise", X/* 11 */ "the %s's tail cuts it free of the web", X/* 12 */ "the %s burns through the web", X/* 13 */ "your missiles pass right through the %s", X/* 14 */ "the %s sees through your illusions", X/* 15 */ "the %s loves the cold!", X/* 16 */ "the %s loves the water!" X `7D; X X/* X * function to create scroll numbers with appropriate probability of`20 X * occurrence X * X * 0 - armor 1 - weapon 2 - enlightenment 3 - paper X * 4 - create monster 5 - create item 6 - aggravate 7 - time warp X * 8 - teleportation 9 - expanded awareness 10 - haste monst X * 11 - heal monster 12 - spirit protection 13 - undead protection X * 14 - stealth 15 - magic mapping 16 - hold monster X * 17 - gem perfection 18 - spell extension 19 - identify X * 20 - remove curse 21 - annihilation 22 - pulverization X * 23 - life protection X */ Xchar scprob`5B`5D= `7B 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, X 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, V 9, X 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, X 15, 15, 16, 16, 16, 17, 17, 18, 18, 19, 19, 19, 20, 20, 20, 20, 21, 22, X 22, 22, 23 `7D; X X/* X * function to return a potion number created with appropriate probability X * of occurrence X * X * 0 - sleep 1 - healing 2 - raise level X * 3 - increase ability 4 - gain wisdom 5 - gain strength X * 6 - increase charisma 7 - dizziness 8 - learning X * 9 - object detection 10 - monster detection 11 - forgetfulness X * 12 - water 13 - blindness 14 - confusion X * 15 - heroism 16 - sturdiness 17 - giant strength X * 18 - fire resistance 19 - treasure finding 20 - instant healing X * 21 - cure dianthroritis 22 - poison 23 - see invisible X */ Xchar potprob`5B`5D = `7B 0, 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, V 9, 9, 9, X 10, 10, 10, 11, 11, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 1 V9, X 20, 20, 22, 22, 23, 23 `7D; X Xchar nlpts`5B`5D = `7B 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 7 `7D; Xchar nch`5B`5D = `7B 0, 0, 0, 1, 1, 1, 2, 2, 3, 4 `7D; Xchar nplt`5B`5D = `7B 0, 0, 0, 0, 1, 1, 2, 2, 3, 4 `7D; Xchar ndgg`5B`5D = `7B 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 5 `7D; Xchar nsw`5B`5D = `7B 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3 `7D; $ CALL UNPACK DATA.C;1 1518082447 $ create 'f' XSOURCES = `09BILL.C, CONFIG.C, CREATE.C, DATA.C, DIAG.C, DISPLAY.C, - X`09`09FORTUNE.C, GLOBAL.C, HELP.C, IO.C, MAIN.C, MONSTER.C, - X`09`09MOREOBJ.C, MOVEM.C, NAP.C, OBJECT.C, REGEN.C, SAVELEV.C, - X`09`09SCORES.C, SIGNAL.C, STORE.C, TOK.C, VMS.C, - X`09`09ACTION.C, FGETLR.C, TGETENT.C, TGETSTR.C, TGOTO.C, TPUTS.C, - X`09`09SPELLS.C, SPHERES.C, INVENTORY.C X XOBJECTS =`09BILL.OBJ, CONFIG.OBJ, CREATE.OBJ, DATA.OBJ, DIAG.OBJ, - X`09`09DISPLAY.OBJ, FORTUNE.OBJ, GLOBAL.OBJ, HELP.OBJ, IO.OBJ, - X`09`09MAIN.OBJ, MONSTER.OBJ, MOREOBJ.OBJ, MOVEM.OBJ, NAP.OBJ, - X`09`09OBJECT.OBJ, REGEN.OBJ, SAVELEV.OBJ, SCORES.OBJ, SIGNAL.OBJ, - X`09`09STORE.OBJ, TOK.OBJ, VMS.OBJ, - X`09`09ACTION.OBJ, FGETLR.OBJ, TGETENT.OBJ, TGETSTR.OBJ, TGOTO.OBJ, - X`09`09TPUTS.OBJ, SPELLS.OBJ, SPHERES.OBJ, INVENTORY.OBJ X XDOBJECTS =`09BILL.DBJ, CONFIG.DBJ, CREATE.DBJ, DATA.DBJ, DIAG.DBJ, - X`09`09DISPLAY.DBJ, FORTUNE.DBJ, GLOBAL.DBJ, HELP.DBJ, IO.DBJ, - X`09`09MAIN.DBJ, MONSTER.DBJ, MOREOBJ.DBJ, MOVEM.DBJ, NAP.DBJ, - X`09`09OBJECT.DBJ, REGEN.DBJ, SAVELEV.DBJ, SCORES.DBJ, SIGNAL.DBJ, - X`09`09STORE.DBJ, TOK.DBJ, VMS.DBJ, - X`09`09ACTION.DBJ, FGETLR.DBJ, TGETENT.DBJ, TGETSTR.DBJ, TGOTO.DBJ, - X`09`09TPUTS.DBJ, SPELLS.DBJ, SPHERES.DBJ, INVENTORY.DBJ X XCDEFS =`09/DEFINE=(LARNHOME="""larndir:""",SAVEINHOME) X X.SUFFIXES X.SUFFIXES .OBJ .DBJ .C X XLARN.EXE : $(OBJECTS) vaxcrtl.opt X`09LINK /NODEBUG/EXEC=LARN.EXE $(OBJECTS), vaxcrtl.opt/options X XLARND.EXE : $(DOBJECTS) X`09LINK/MAP/DEBUG/EXE=LARND.EXE $(DOBJECTS), sys$library:vaxcrtl.olb/libr X XLARNPCA.EXE : $(DOBJECTS) X LINK /DEBUG=SYS$LIBRARY:PCA$OBJ.OBJ/EXEC=LARNPCA.EXE $(DOBJECTS),- X SYS$LIBRARY:VAXCRTL.OLB/LIBR X X$(OBJECTS),$(DOBJECTS) : HEADER.H LARNDEFS.H MONSTERS.H PLAYER.H OBJECTS.H X X.C.OBJ X`09CC $(CDEFS) /NODEB/OPTIM/OBJ=$*.OBJ $*.C X X.C.DBJ X`09CC $(CDEFS) /DEBUG/NOOPT/OBJ=$*.DBJ $*.C X Xvaxcrtl.opt : X`09open/write f vaxcrtl.opt X`09write f "sys$share:vaxcrtl/share" X`09close f X $ CALL UNPACK DESCRIP.MMS;1 1343629328 $ create 'f' X/* diag.c */ X#ifdef VMS X# include X# include X#else X# include X# include X#endif VMS X X#ifndef MSDOS X# ifndef VMS X# include X static struct tms cputime; X# endif VMS X#endif MSDOS X X#include "header.h" X#include "larndefs.h" X#include "monsters.h" X#include "objects.h" X#include "player.h" X Xextern long int initialtime; Xextern int rmst,maxitm,lasttime; Xextern char nosignal; X X#define max( _a, _b ) (( _a > _b ) ? _a : _b ) X X/* X *************************** X DIAG -- dungeon diagnostics X *************************** X X subroutine to print out data for debugging X */ X#ifdef EXTRA Xstatic int rndcount`5B16`5D; Xdiag() X `7B X register int i,j; X int hit,dam; X cursors(); lwclose(); X if (lcreat(diagfile) < 0) /* open the diagnostic file */ X `7B X lcreat((char*)0); lprcat("\ndiagnostic failure\n"); return(-1); X `7D X X write(1,"\nDiagnosing . . .\n",18); X lprcat("\n\nBeginning of DIAG diagnostics ----------\n"); X X/* for the character attributes */ X X lprintf("\n\nPlayer attributes:\n\nHit points: %2d(%2d)",(long)c`5BHP`5D V,(long)c`5BHPMAX`5D); X lprintf("\ngold: %d Experience: %d Character level: %d Level in caver Vns: %d", X (long)c`5BGOLD`5D,(long)c`5BEXPERIENCE`5D,(long)c`5BLEVEL`5D,(long)l Vevel); X lprintf("\nTotal types of monsters: %d",(long)MAXMONST+8); X X lprcat("\f\nHere's the dungeon:\n\n"); X X i=level; X for (j=0; j