games-request@tekred.UUCP (09/01/87)
Submitted by: Bill Randle <games-request@tekred.TEK.COM> Comp.sources.games: Volume 2, Issue 40 Archive-name: dungeon/Part07 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 7 (of 14)." # Contents: Makefile PDP.doc advers.h ballop.F cinit.c cio.c cspeak.c # curxt.h debug.h decode.c dso1.F dso3.F dso4.F dso5.F dso6.F dso7.F # dungeon.sh exits.h files.h flags.h gamestate.h io.h lightp.F # listen.c mindex.h oindex.h parser.h puzzle.h rflag.h rooms.h # rtim.c screen.h state.h villians.h vocab.h xpars.h xsrch.h # Wrapped by billr@tekred on Tue Apr 21 10:24:39 1987 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f Makefile -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"Makefile\" else echo shar: Extracting \"Makefile\" \(1818 characters\) sed "s/^X//" >Makefile <<'END_OF_Makefile' X# Makefile for creating dungeon X# Edit BIN DDIR and FFLAGS suitable for your system X.c.o: X cc -c $(CFLAGS) $*.c X.F.o: X f77 -c $(FFLAGS) $*.F X XCFLAGS = -O # -i X# X# f77 compiler flags for Vax (and other large address machines) X# XFFLAGS = -O -q # -Ddebug X# f77 compiler flags for pdp (64K split I/D) X#FFLAGS = -O -q -I2 -L1 -i -DPDP # -Ddebug X X# Directory path for main program - default /usr/games XBIN = /usr/games X# Directory path for data files - default is /usr/games/lib/dunlib XDDIR = \'/usr/games/lib/dunlib XDCDIR =\"/usr/games/lib/dunlib X# Directory path for man page - default /usr/manl/man6 XMDIR = /usr/manl/man6 X# userid for wizard - allows invoking game debugging tool - default 0 XWIZDEF = -DWIZARDID=20 X XOBJS = actors.o ballop.o clockr.o demons.o\ X dgame.o dinit.o dmain.o dso1.o dso2.o\ X dso3.o dso4.o dso5.o dso6.o dso7.o\ X dsub.o dverb1.o dverb2.o gdt.o lightp.o\ X nobjs.o np.o np1.o np2.o np3.o nrooms.o objcts.o\ X rooms.o rtim.o sobjs.o sverbs.o verbs.o villns.o X XPDPOBJS = cinit.o cio.o lex.o XLISTEN = listen.o XSPEAK = cspeak.o speak.o X Xvax: dungeon dtext.dat Xpdp: dungpdp speak listen dtext.dat X Xdungeon: $(OBJS) X f77 -s -o dungeon $(OBJS) X Xdungpdp: $(OBJS) $(PDPOBJS) X f77 -i -s -o dungpdp $(OBJS) $(PDPOBJS) X Xspeak: $(SPEAK) X f77 -i -s -o speak $(SPEAK) X Xspeak.o: speak.F X f77 $(FFLAGS) -DDDIR=$(DDIR) -c speak.F X Xlisten: $(LISTEN) X cc $(CFLAGS) -o listen $(LISTEN) X Xlisten.o: listen.c X cc $(CFLAGS) -DCINDEXFILE=$(DCDIR)/dindx.dat\" -c listen.c X Xdinit.o: dinit.F X f77 $(FFLAGS) -DDDIR=$(DDIR) $(WIZDEF) -c dinit.F X Xinstall-vax: vax X cp dungeon $(BIN) X -mkdir $(DDIR) X cp dindx.dat dtext.dat $(DDIR) X cp dungeon.6 $(MDIR)/dungeon.6 X Xinstall-pdp: pdp X cp dungeon.sh $(BIN) X -mkdir $(DDIR) X cp dindx.dat dtext.dat rtext.dat dungpdp $(DDIR) X cp dungeon.6 $(MDIR)/dungeon.6 X Xdtext.dat: X ./maketxt.sh X END_OF_Makefile if test 1818 -ne `wc -c <Makefile`; then echo shar: \"Makefile\" unpacked with wrong size! fi # end of overwriting check fi if test -f PDP.doc -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"PDP.doc\" else echo shar: Extracting \"PDP.doc\" \(2922 characters\) sed "s/^X//" >PDP.doc <<'END_OF_PDP.doc' XThe implementation of dungeon on unix systems XRandy Dietrich 17 Nov 1981 X XWhen we set out to get dungeon running on unix we figured Xit wouldn't be too big a problem. After all a fortran Xcompiler (F77) existed and with relatively little problem Xmanaged to get everything to compile. XThen the Zorkmids hit the volcano. XWe thought that a program which would run in 28k on an XRSX system would have fit just fine in 64k, especially Xwith seperate i & d. We did not realize just how hostile Xunix is to FORTRAN programs. XThe first link indicated about 130 k (text only) was needed Xfor the whole game (Ieeeeee). Recompiling with short (I2) Xintegers brought this down to about 100k. Throwing out Xthe game debug package (9k) and the save and restore code (3k) Xgot us to within 20k. XAt this point we discovered that the fortran library that Xwas being used was about 25k (A HA !!). If we could just Xeliminate that we would be in business. A great game with Xno I/O !! further work allowed us to write the I/O in C Xwith the bulk of the game using only standard input and output. XThe initialization and message printing were "moved out" Xinto seperate processes and the whole mess piped together. Xit is a real kludge but seems to work (mostly). X XThe Input process is called 'listen'. It first reads the init Xfile and shoves it in the pipe and then switches to pass Xkeyboard input to the main game. This keeps the main program Xfrom having to read anything but 'standard input'. X XThe output process is currently called 'speak'. Xthis process does the lookup in the file 'dtext.dat' and Xsends out the messages that give dungeon it's flavor. This Xprocess also passes clear text from the main program to Xallow the output of other messages for such things as the Xecho room, puzzle room, and score. These functions Xwere also 'moved out' so the main program would not have Xto access any disc files. X XThe main program is sandwitched between listen and speak. XIt really does the work of the game. I/O is handled Xthorugh C routines in 'cio.c'. this keeps any fortran XI/O from being used and calling in the whole #$%@ fortran Xlibrary. X XThe current lash-up does save or restore but not both. XIt is going to take a while to work in as we are out of room Xin the main program and will have to re-write something Xto make it all fit. I guess we will just have to play Xwithout being able to cheat for a while. X XRestores are done by initializing the game with a second argument X(some day the file name) of 'r'. This causes the init process Xto send a 'R' down down the pipe followed by the restore data. Xnormally the init process ends with a '?'. The trailing '?' Xwill follow the restore data. X XSaves are done from within the game. The game sends a 's' Xdown the pipe to signal the speak process to do a save opperation. XThe save data then goes down the pipe followed by 'e' to Xsignal the end of data. The save data is 'dungeon.sav'. END_OF_PDP.doc if test 2922 -ne `wc -c <PDP.doc`; then echo shar: \"PDP.doc\" unpacked with wrong size! fi # end of overwriting check fi if test -f advers.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"advers.h\" else echo shar: Extracting \"advers.h\" \(217 characters\) sed "s/^X//" >advers.h <<'END_OF_advers.h' XC XC ADVENTURERS XC X COMMON /ADVS/ ALNT,AROOM(4),ASCORE(4),AVEHIC(4), X& AOBJ(4),AACTIO(4),ASTREN(4),AFLAG(4) X INTEGER EQA(4,7) X EQUIVALENCE (AROOM, EQA) XC X COMMON /AFLAGS/ ASTAG XC X COMMON /AINDEX/ PLAYER,AROBOT,AMASTR END_OF_advers.h if test 217 -ne `wc -c <advers.h`; then echo shar: \"advers.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f ballop.F -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"ballop.F\" else echo shar: Extracting \"ballop.F\" \(2153 characters\) sed "s/^X//" >ballop.F <<'END_OF_ballop.F' XC BALLOP- BALLOON FUNCTION XC XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142 XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED XC WRITTEN BY R. M. SUPNIK XC XC DECLARATIONS XC X LOGICAL FUNCTION BALLOP(ARG) X IMPLICIT INTEGER (A-Z) X LOGICAL FINDXT,QEMPTY X#include "parser.h" X#include "gamestate.h" X#include "state.h" X#include "rooms.h" X#include "rflag.h" X#include "curxt.h" X#include "xpars.h" X#include "objects.h" X#include "oflags.h" X#include "oindex.h" X#include "clock.h" X X#include "verbs.h" X#include "flags.h" XC BALLOP, PAGE 2 XC X BALLOP=.TRUE. XC !ASSUME WINS. X IF(ARG.NE.2) GO TO 200 XC !READOUT? X IF(PRSA.NE.LOOKW) GO TO 10 XC !ONLY PROCESS LOOK. X IF(BINFF.NE.0) GO TO 50 XC !INFLATED? X CALL RSPEAK(543) XC !NO. X GO TO 100 X50 CALL RSPSUB(544,ODESC2(BINFF)) XC !YES. X100 IF(BTIEF.NE.0) CALL RSPEAK(545) XC !HOOKED? X RETURN XC X200 IF(ARG.NE.1) GO TO 500 XC !READIN? X IF(PRSA.NE.WALKW) GO TO 300 XC !WALK? X IF(FINDXT(PRSO,HERE)) GO TO 250 XC !VALID EXIT? X CALL RSPEAK(546) XC !NO, JOKE. X RETURN XC X250 IF(BTIEF.EQ.0) GO TO 275 XC !TIED UP? X CALL RSPEAK(547) XC !YES, JOKE. X RETURN XC X275 IF(XTYPE.NE.XNORM) GO TO 10 XC !NORMAL EXIT? X IF(and(RFLAG(XROOM1),RMUNG).EQ.0) BLOC=XROOM1 X10 BALLOP=.FALSE. X RETURN XC X300 IF((PRSA.NE.TAKEW).OR.(PRSO.NE.BINFF)) GO TO 350 X CALL RSPSUB(548,ODESC2(BINFF)) XC !RECEP CONT TOO HOT. X RETURN XC X350 IF((PRSA.NE.PUTW).OR.(PRSI.NE.RECEP).OR.QEMPTY(RECEP)) X& GO TO 10 X CALL RSPEAK(549) X RETURN XC X500 IF((PRSA.NE.UNBOAW).OR.(and(RFLAG(HERE),RLAND).EQ.0)) X& GO TO 600 X IF(BINFF.NE.0) CTICK(CEVBAL)=3 XC !HE GOT OUT, START BALLOON. X GO TO 10 XC X600 IF((PRSA.NE.BURNW).OR.(OCAN(PRSO).NE.RECEP)) GO TO 700 X CALL RSPSUB(550,ODESC2(PRSO)) XC !LIGHT FIRE IN RECEP. X CTICK(CEVBRN)=OSIZE(PRSO)*20 X OFLAG1(PRSO)=or(OFLAG1(PRSO), X& and((ONBT+FLAMBT+LITEBT), not(TAKEBT+READBT))) X IF(BINFF.NE.0) RETURN X IF(.NOT.BLABF) CALL NEWSTA(BLABE,0,0,BALLO,0) X BLABF=.TRUE. X BINFF=PRSO X CTICK(CEVBAL)=3 X CALL RSPEAK(551) X RETURN XC X700 IF((PRSA.EQ.UNBOAW).AND.(BINFF.NE.0).AND. X& (and(RFLAG(HERE),RLAND).NE.0)) X& CTICK(CEVBAL)=3 X GO TO 10 XC X END END_OF_ballop.F if test 2153 -ne `wc -c <ballop.F`; then echo shar: \"ballop.F\" unpacked with wrong size! fi # end of overwriting check fi if test -f cinit.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"cinit.c\" else echo shar: Extracting \"cinit.c\" \(940 characters\) sed "s/^X//" >cinit.c <<'END_OF_cinit.c' X#include <stdio.h> X X X/* read one integer from the open file */ Xintrd_(valptr) X Xint *valptr; X{ X scanf("%d",valptr); X while((getchar() != '\n')); X return; X} X X/* read an array from the open file */ Xaryrd_(cntptr,aryptr) X Xint *cntptr,*aryptr[]; X{ X int i; X X for(i = *cntptr; i > 0;--i,++aryptr) X scanf("%d",aryptr); X while((getchar() != '\n')); X return; X} X X/* get a logical value */ Xlogrd_(ptr) Xint *ptr; X{ Xstatic char byte; X X *ptr = 0; X while((byte = getchar()) != '\n'){ X if ((byte == 'T') || (byte == 't')) X *ptr = 1; X } X return; X} X X X/* wait for end of init flag */ Xinitnd_() X{ X static int chr; X X while ((chr = getchar()) != '?'){ /* wait for end flag */ X if (chr == 'R') /* check for restore flag */ X rstrgm_(); /* call restore routine */ X } X return; X} X X/* write an array to the open pipe */ Xarywt_(cntptr,aryptr) X Xint *cntptr,*aryptr[]; X{ X static int i; X X for(i = *cntptr; i > 0;--i,++aryptr) X printf("%d\n",*aryptr); X return; X} X END_OF_cinit.c if test 940 -ne `wc -c <cinit.c`; then echo shar: \"cinit.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f cio.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"cio.c\" else echo shar: Extracting \"cio.c\" \(2551 characters\) sed "s/^X//" >cio.c <<'END_OF_cio.c' X/* these are c routines to handle the pdp dungeon i/o */ X#include <stdio.h> X X/* send arguments to message printing process */ Xrspsb3_(arg1,arg2,arg3) X Xint *arg1,*arg2,*arg3; X{ X printf("n%d %d %d\n",*arg1,*arg2,*arg3); X fflush(stdout); X return; X} X X/* print for puzzle room */ Xpuzout_(p) X Xchar *p; X{ X Xprintf(" |%c%c %c%c %c%c|\n",p[0],p[0],p[1],p[1],p[2],p[2]); Xprintf(" WEST |%c%c .. %c%c| EAST\n",p[3],p[3],p[4],p[4]); Xprintf(" |%c%c %c%c %c%c|\n",p[5],p[5],p[6],p[6],p[7],p[7]); Xfflush(stdout); Xreturn; X} X X/* output general string (echo room) */ Xoutstr_(ptr,len) X Xint *len; Xchar *ptr[]; X{ X printf("%.*s\n",*len,ptr); X fflush(stdout); X return; X} X X X/* print a prompt */ Xprompt_() X{ X printf(" > ~"); X fflush(stdout); X return; X} X X/* terminate the game */ Xexit_() X{ X fprintf(stderr,"The game is over\n"); X exit(0); X} X X/* read a character */ Xrdchr_(cptr) X Xchar *cptr; X{ Xstatic int ch; X X if((ch = getchar()) == EOF){ X fprintf(stderr,"EOF on input\n"); X exit_(); X } X else *cptr = ch; X return; X} X X/* read a line from std input */ Xrdlin_(sptr,cntptr) X Xint *cntptr; Xchar *sptr; X{ Xstatic int chr; X *cntptr = 0; X while ((chr = getchar()) != EOF){ X if((chr >= 97) && (chr <= 122)) /* convert to uc */ X chr -= 32; X if (chr == 10 ){ /* quit if newline */ X *sptr++ = '\0'; X return; X } X if ((chr == 32) && (*cntptr == 0)) /* rm lead blank */ X continue; X if (*cntptr >= 78) X continue; X *sptr++ = chr; X (*cntptr)++; X } X fprintf(stderr,"EOF on input\n"); X exit_(); X} X X/* print cure time */ Xcured_(time) X Xint *time; X{ X printf(" You will be cured in %d moves\n",*time); X fflush(stdout); X return; X} X X/* print the score */ Xpscore_(score,max,moves) X Xint *score, *max, *moves; X{ Xprintf(" Your current score is %d out of %d points in %d moves.\n",*score, *max, *moves); X fflush(stdout); X return; X} X X/* BUG-- REPORT FATAL SYSTEM ERROR XC XC CALLED BY-- XC XC CALL BUG(NO,PAR) XC XC note: return if DBGFLG set is not implemented XC*/ Xbug_(a,b) X Xint *a,*b; X{ X fprintf(stderr,"Program error %d ; Parameter %d\n",*a,*b); X exit(0); X} X X X/* send restore message */ Xrestor_() X{ X printf(" Restore by starting with 'dungeon r'\n"); X return; X} X X/* password output */ Xvoice_(sp1, sp2) X Xchar *sp1, *sp2; X{ X printf(" A Hollow voice replies: %6.6s %6.6s\n", sp1, sp2); X return; X} X X/* print version */ Xprvers_(v1, v2, v3) X Xint *v1, *v2; Xchar *v3; X{ X printf(" V%1d.%2d%c\n", *v1, *v2, *v3); X return; X} X X/* dummy stub for game debugger */ Xnogdt_() X{ X /* debugger deleted to save room */ X printf(" Sorry, no debugger available in this version.\n"); X return; X} END_OF_cio.c if test 2551 -ne `wc -c <cio.c`; then echo shar: \"cio.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f cspeak.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"cspeak.c\" else echo shar: Extracting \"cspeak.c\" \(1188 characters\) sed "s/^X//" >cspeak.c <<'END_OF_cspeak.c' X#include <stdio.h> X X/* routine to sort out input stream */ X/* first character determines destination of the following data X n - get arguments for 'rspeak' X s - put data on dungeon save file until 'e' is received X else - pass text to screen */ X Xinprd_(pa,pb,pc) X Xint *pa, *pb, *pc; X{ Xint chr; X X (*pa)=(*pb)=(*pc)=0; X X while((chr = getchar()) != EOF) { X if (chr == '\n') X continue; X switch (chr) { X X case 'n': /* get args for rspeak */ X if (scanf("%d%d%d",pa,pb,pc) > 0) X return; X else X printf("Speak input error\n"); X break; X X case 's': /* send save data to file */ X wrtsave(); X break; X X default: X putchar(chr); X break; X X } X /* send text to screen */ X while((chr = getchar()) != EOF){ X if (chr == '~') X break; X putchar(chr); X if (chr == '\n') X break; X } X } X X /* terminate process */ X printf("Goodbye ... GASP\n"); X exit(0); X} X X/* write a save file */ X Xwrtsave() X{ X FILE *savptr, *fopen(); X char chr; X X savptr = fopen("dungeon.sav","w"); X X while ((chr = getchar()) != EOF) { X if (chr == 'e') { /* check for end char */ X fclose(savptr); X return; X } X putc(chr,savptr); X } X printf("EOF during save\n"); X exit(0); X} END_OF_cspeak.c if test 1188 -ne `wc -c <cspeak.c`; then echo shar: \"cspeak.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f curxt.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"curxt.h\" else echo shar: Extracting \"curxt.h\" \(94 characters\) sed "s/^X//" >curxt.h <<'END_OF_curxt.h' XC XC CURRENT EXITS XC X COMMON /CURXT/ XTYPE,XROOM1,XSTRNG,XACTIO,XOBJ X EQUIVALENCE (XFLAG,XOBJ) END_OF_curxt.h if test 94 -ne `wc -c <curxt.h`; then echo shar: \"curxt.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f debug.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"debug.h\" else echo shar: Extracting \"debug.h\" \(80 characters\) sed "s/^X//" >debug.h <<'END_OF_debug.h' XC X COMMON /DEBUG/ DBGFLG,PRSFLG,GDTFLG X#ifdef debug X LOGICAL DFLAG X#endif debug END_OF_debug.h if test 80 -ne `wc -c <debug.h`; then echo shar: \"debug.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f decode.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"decode.c\" else echo shar: Extracting \"decode.c\" \(462 characters\) sed "s/^X//" >decode.c <<'END_OF_decode.c' X/* X * Decode dtext.dat file into readable ASCII. X * John Gilmore (hoptoad!gnu), December 1986 X */ X#include <stdio.h> X#define STRLEN 74 Xchar string[STRLEN+1]; Xint recno = 0; X Xmain() { X unsigned char byte, byte2; X int i; X X while (1) { X recno++; X byte = getchar(); X byte2 = getchar(); X if (1 != fread (string, STRLEN, 1, stdin)) exit(0); X for (i = 1; i <= STRLEN; i++) X string[i-1] ^= (recno&31)+i; X printf("%2x%02x %s\n", X byte2, byte, string); X } X} X END_OF_decode.c if test 462 -ne `wc -c <decode.c`; then echo shar: \"decode.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f dso1.F -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"dso1.F\" else echo shar: Extracting \"dso1.F\" \(2806 characters\) sed "s/^X//" >dso1.F <<'END_OF_dso1.F' XC PRINCR- PRINT CONTENTS OF ROOM XC XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142 XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED XC WRITTEN BY R. M. SUPNIK XC XC DECLARATIONS XC X SUBROUTINE PRINCR(FULL,RM) X IMPLICIT INTEGER (A-Z) X LOGICAL QEMPTY,QHERE,FULL X#include "gamestate.h" X#include "rooms.h" X#include "rflag.h" XC X#include "objects.h" X#include "oflags.h" X#include "oindex.h" X#include "advers.h" X#include "flags.h" XC PRINCR, PAGE 2 XC X J=329 XC !ASSUME SUPERBRIEF FORMAT. X DO 500 I=1,OLNT XC !LOOP ON OBJECTS X IF(.NOT.QHERE(I,RM).OR.(and(OFLAG1(I),(VISIBT+NDSCBT)).NE. X& VISIBT).OR.(I.EQ.AVEHIC(WINNER))) GO TO 500 X IF(.NOT.FULL.AND.(SUPERF.OR.(BRIEFF.AND. X& (and(RFLAG(HERE),RSEEN).NE.0)))) GO TO 200 XC XC DO LONG DESCRIPTION OF OBJECT. XC X K=ODESCO(I) XC !GET UNTOUCHED. X IF((K.EQ.0).OR.(and(OFLAG2(I),TCHBT).NE.0)) K=ODESC1(I) X CALL RSPEAK(K) XC !DESCRIBE. X GO TO 500 XC DO SHORT DESCRIPTION OF OBJECT. XC X200 CALL RSPSUB(J,ODESC2(I)) XC !YOU CAN SEE IT. X J=502 XC X500 CONTINUE XC XC NOW LOOP TO PRINT CONTENTS OF OBJECTS IN ROOM. XC X DO 1000 I=1,OLNT XC !LOOP ON OBJECTS. X IF(.NOT.QHERE(I,RM).OR.(and(OFLAG1(I),(VISIBT+NDSCBT)).NE. X& VISIBT)) GO TO 1000 X IF(and(OFLAG2(I),ACTRBT).NE.0) CALL INVENT(OACTOR(I)) X IF(((and(OFLAG1(I),TRANBT).EQ.0) X& .AND.(and(OFLAG2(I),OPENBT).EQ.0)) X& .OR.QEMPTY(I)) GO TO 1000 XC XC OBJECT IS NOT EMPTY AND IS OPEN OR TRANSPARENT. XC X J=573 X IF(I.NE.TCASE) GO TO 600 XC !TROPHY CASE? X J=574 X IF((BRIEFF.OR.SUPERF).AND. .NOT.FULL) GO TO 1000 X600 CALL PRINCO(I,J) XC !PRINT CONTENTS. XC X1000 CONTINUE X RETURN XC X END XC INVENT- PRINT CONTENTS OF ADVENTURER XC XC DECLARATIONS XC X SUBROUTINE INVENT(ADV) X IMPLICIT INTEGER (A-Z) X LOGICAL QEMPTY X#include "gamestate.h" X#include "objects.h" X#include "oflags.h" XC X#include "advers.h" XC INVENT, PAGE 2 XC X I=575 XC !FIRST LINE. X IF(ADV.NE.PLAYER) I=576 XC !IF NOT ME. X DO 10 J=1,OLNT XC !LOOP X IF((OADV(J).NE.ADV).OR.(and(OFLAG1(J),VISIBT).EQ.0)) X& GO TO 10 X CALL RSPSUB(I,ODESC2(AOBJ(ADV))) X I=0 X CALL RSPSUB(502,ODESC2(J)) X10 CONTINUE XC X IF(I.EQ.0) GO TO 25 XC !ANY OBJECTS? X IF(ADV.EQ.PLAYER) CALL RSPEAK(578) XC !NO, TELL HIM. X RETURN XC X25 DO 100 J=1,OLNT XC !LOOP. X IF((OADV(J).NE.ADV).OR.(and(OFLAG1(J),VISIBT).EQ.0).OR. X& ((and(OFLAG1(J),TRANBT).EQ.0).AND. X& (and(OFLAG2(J),OPENBT).EQ.0))) GO TO 100 X IF(.NOT.QEMPTY(J)) CALL PRINCO(J,573) XC !IF NOT EMPTY, LIST. X100 CONTINUE X RETURN XC X END XC PRINCO- PRINT CONTENTS OF OBJECT XC XC DECLARATIONS XC X SUBROUTINE PRINCO(OBJ,DESC) X IMPLICIT INTEGER(A-Z) X#include "objects.h" XC X CALL RSPSUB(DESC,ODESC2(OBJ)) XC !PRINT HEADER. X DO 100 I=1,OLNT XC !LOOP THRU. X IF(OCAN(I).EQ.OBJ) CALL RSPSUB(502,ODESC2(I)) X100 CONTINUE X RETURN XC X END END_OF_dso1.F if test 2806 -ne `wc -c <dso1.F`; then echo shar: \"dso1.F\" unpacked with wrong size! fi # end of overwriting check fi if test -f dso3.F -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"dso3.F\" else echo shar: Extracting \"dso3.F\" \(2686 characters\) sed "s/^X//" >dso3.F <<'END_OF_dso3.F' XC FINDXT- FIND EXIT FROM ROOM XC XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142 XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED XC WRITTEN BY R. M. SUPNIK XC XC DECLARATIONS XC X LOGICAL FUNCTION FINDXT(DIR,RM) X IMPLICIT INTEGER (A-Z) X#include "rooms.h" X#include "exits.h" X#include "curxt.h" X#include "xpars.h" XC X FINDXT=.TRUE. XC !ASSUME WINS. X XI=REXIT(RM) XC !FIND FIRST ENTRY. X IF(XI.EQ.0) GO TO 1000 XC !NO EXITS? XC X100 I=TRAVEL(XI) XC !GET ENTRY. X XROOM1=and(I,XRMASK) X XTYPE=and((and(I,not(XLFLAG))/XFSHFT),XFMASK)+1 X GO TO (110,120,130,130),XTYPE XC !BRANCH ON ENTRY. X CALL BUG(10,XTYPE) XC X130 XOBJ=and(TRAVEL(XI+2),XRMASK) X XACTIO=TRAVEL(XI+2)/XASHFT X120 XSTRNG=TRAVEL(XI+1) XC !DOOR/CEXIT/NEXIT - STRING. X110 XI=XI+XELNT(XTYPE) XC !ADVANCE TO NEXT ENTRY. X IF(and(I,XDMASK).EQ.DIR) RETURN X IF(and(I,XLFLAG).EQ.0) GO TO 100 X1000 FINDXT=.FALSE. XC !YES, LOSE. X RETURN X END XC FWIM- FIND WHAT I MEAN XC XC DECLARATIONS XC X INTEGER FUNCTION FWIM(F1,F2,RM,CON,ADV,NOCARE) X IMPLICIT INTEGER (A-Z) X LOGICAL NOCARE X#include "objects.h" X#include "oflags.h" XC X FWIM=0 XC !ASSUME NOTHING. X DO 1000 I=1,OLNT XC !LOOP X IF(((RM.EQ.0).OR.(OROOM(I).NE.RM)) .AND. X& ((ADV.EQ.0).OR.(OADV(I).NE.ADV)) .AND. X& ((CON.EQ.0).OR.(OCAN(I).NE.CON))) X& GO TO 1000 XC XC OBJECT IS ON LIST... IS IT A MATCH? XC X IF(and(OFLAG1(I),VISIBT).EQ.0) GO TO 1000 X IF(and(not(NOCARE),(and(OFLAG1(I),TAKEBT).EQ.0)) .OR. X& ((and(OFLAG1(I),F1).EQ.0).AND. X& (and(OFLAG2(I),F2).EQ.0))) GO TO 500 X IF(FWIM.EQ.0) GO TO 400 XC !ALREADY GOT SOMETHING? X FWIM=-FWIM XC !YES, AMBIGUOUS. X RETURN XC X400 FWIM=I XC !NOTE MATCH. XC XC DOES OBJECT CONTAIN A MATCH? XC X500 IF(and(OFLAG2(I),OPENBT).EQ.0) GO TO 1000 X DO 700 J=1,OLNT XC !NO, SEARCH CONTENTS. X IF((OCAN(J).NE.I).OR.(and(OFLAG1(J),VISIBT).EQ.0) .OR. X& ((and(OFLAG1(J),F1).EQ.0).AND. X& (and(OFLAG2(J),F2).EQ.0))) GO TO 700 X IF(FWIM.EQ.0) GO TO 600 X FWIM=-FWIM X RETURN XC X600 FWIM=J X700 CONTINUE X1000 CONTINUE X RETURN X END XC YESNO- OBTAIN YES/NO ANSWER XC XC CALLED BY- XC XC YES-IS-TRUE=YESNO(QUESTION,YES-STRING,NO-STRING) XC X LOGICAL FUNCTION YESNO(Q,Y,N) X IMPLICIT INTEGER(A-Z) X COMMON /CHAN/ INPCH,OUTCH,DBCH X CHARACTER ANS XC X100 CALL RSPEAK(Q) XC !ASK X#ifdef PDP X call rdchr(ANS) X#else X READ(INPCH,110) ANS X#endif PDP XC !GET ANSWER X110 FORMAT(A1) X IF((ANS.EQ.'Y').OR.(ANS.EQ.'y')) GO TO 200 X IF((ANS.EQ.'N').OR.(ANS.EQ.'n')) GO TO 300 X CALL RSPEAK(6) XC !SCOLD. X GO TO 100 XC X200 YESNO=.TRUE. XC !YES, X CALL RSPEAK(Y) XC !OUT WITH IT. X RETURN XC X300 YESNO=.FALSE. XC !NO, X CALL RSPEAK(N) XC !LIKEWISE. X RETURN XC X END END_OF_dso3.F if test 2686 -ne `wc -c <dso3.F`; then echo shar: \"dso3.F\" unpacked with wrong size! fi # end of overwriting check fi if test -f dso4.F -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"dso4.F\" else echo shar: Extracting \"dso4.F\" \(2615 characters\) sed "s/^X//" >dso4.F <<'END_OF_dso4.F' XC ROBADV-- STEAL WINNER'S VALUABLES XC XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142 XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED XC WRITTEN BY R. M. SUPNIK XC XC DECLARATIONS XC X INTEGER FUNCTION ROBADV(ADV,NR,NC,NA) X IMPLICIT INTEGER (A-Z) X#include "objects.h" X#include "oflags.h" XC X ROBADV=0 XC !COUNT OBJECTS X DO 100 I=1,OLNT X IF((OADV(I).NE.ADV).OR.(OTVAL(I).LE.0).OR. X& (and(OFLAG2(I),SCRDBT).NE.0)) GO TO 100 X CALL NEWSTA(I,0,NR,NC,NA) XC !STEAL OBJECT X ROBADV=ROBADV+1 X100 CONTINUE X RETURN X END XC ROBRM-- STEAL ROOM VALUABLES XC XC DECLARATIONS XC X INTEGER FUNCTION ROBRM(RM,PR,NR,NC,NA) X IMPLICIT INTEGER (A-Z) X LOGICAL PROB,QHERE X#include "objects.h" X#include "oflags.h" XC X ROBRM=0 XC !COUNT OBJECTS X DO 100 I=1,OLNT XC !LOOP ON OBJECTS. X IF(.NOT. QHERE(I,RM)) GO TO 100 X IF((OTVAL(I).LE.0).OR.(and(OFLAG2(I),SCRDBT).NE.0).OR. X& (and(OFLAG1(I),VISIBT).EQ.0).OR.(.NOT.PROB(PR,PR))) X& GO TO 50 X CALL NEWSTA(I,0,NR,NC,NA) X ROBRM=ROBRM+1 X OFLAG2(I)=or(OFLAG2(I),TCHBT) X GO TO 100 X50 IF(and(OFLAG2(I),ACTRBT).NE.0) X& ROBRM=ROBRM+ROBADV(OACTOR(I),NR,NC,NA) X100 CONTINUE X RETURN X END XC WINNIN-- SEE IF VILLAIN IS WINNING XC XC DECLARATIONS XC X LOGICAL FUNCTION WINNIN(VL,HR) X IMPLICIT INTEGER (A-Z) X LOGICAL PROB X#include "objects.h" XC X VS=OCAPAC(VL) XC !VILLAIN STRENGTH X PS=VS-FIGHTS(HR,.TRUE.) XC !HIS MARGIN OVER HERO X WINNIN=PROB(90,100) X IF(PS.GT.3) RETURN XC !+3... 90% WINNING X WINNIN=PROB(75,85) X IF(PS.GT.0) RETURN XC !>0... 75% WINNING X WINNIN=PROB(50,30) X IF(PS.EQ.0) RETURN XC !=0... 50% WINNING X WINNIN=PROB(25,25) X IF(VS.GT.1) RETURN XC !ANY VILLAIN STRENGTH. X WINNIN=PROB(10,0) X RETURN X END XC FIGHTS-- COMPUTE FIGHT STRENGTH XC XC DECLARATIONS XC X INTEGER FUNCTION FIGHTS(H,FLG) X IMPLICIT INTEGER (A-Z) X LOGICAL FLG XC XC GAME STATE XC X#include "state.h" X#include "advers.h" XC XC FUNCTIONS AND DATA XC X DATA SMAX/7/,SMIN/2/ XC X FIGHTS=SMIN+((((SMAX-SMIN)*ASCORE(H))+(MXSCOR/2))/MXSCOR) X IF(FLG) FIGHTS=FIGHTS+ASTREN(H) X RETURN X END XC VILSTR- COMPUTE VILLAIN STRENGTH XC XC DECLARATIONS XC X INTEGER FUNCTION VILSTR(V) X IMPLICIT INTEGER (A-Z) X#include "parser.h" X#include "objects.h" X#include "oflags.h" X#include "oindex.h" X#include "villians.h" X#include "flags.h" XC VILSTR, PAGE 2 XC X VILSTR=OCAPAC(V) X IF(VILSTR.LE.0) RETURN X IF((V.NE.THIEF).OR..NOT.THFENF) GO TO 100 X THFENF=.FALSE. XC !THIEF UNENGROSSED. X VILSTR=MIN0(VILSTR,2) XC !NO BETTER THAN 2. XC X100 DO 200 I=1,VLNT XC !SEE IF BEST WEAPON. X IF((VILLNS(I).EQ.V).AND.(PRSI.EQ.VBEST(I))) X& VILSTR=MAX0(1,VILSTR-1) X200 CONTINUE X RETURN X END END_OF_dso4.F if test 2615 -ne `wc -c <dso4.F`; then echo shar: \"dso4.F\" unpacked with wrong size! fi # end of overwriting check fi if test -f dso5.F -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"dso5.F\" else echo shar: Extracting \"dso5.F\" \(2654 characters\) sed "s/^X//" >dso5.F <<'END_OF_dso5.F' XC XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142 XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED XC WRITTEN BY R. M. SUPNIK XC X#ifndef PDP /* replaced by C function for pdp */ XC GTTIME-- GET TOTAL TIME PLAYED XC XC DECLARATIONS XC X SUBROUTINE GTTIME(T) X IMPLICIT INTEGER(A-Z) XC X COMMON /TIME/ PLTIME,SHOUR,SMIN,SSEC XC X CALL ITIME(H,M,S) X T=((H*60)+M)-((SHOUR*60)+SMIN) X IF(T.LT.0) T=T+1440 X T=T+PLTIME X RETURN X END X#endif PDP XC OPNCLS-- PROCESS OPEN/CLOSE FOR DOORS XC XC DECLARATIONS XC X LOGICAL FUNCTION OPNCLS(OBJ,SO,SC) X IMPLICIT INTEGER (A-Z) X LOGICAL QOPEN X#include "parser.h" X#include "objects.h" X#include "oflags.h" X#include "verbs.h" XC XC FUNCTIONS AND DATA XC X QOPEN(O)=and(OFLAG2(O),OPENBT).NE.0 XC X OPNCLS=.TRUE. XC !ASSUME WINS. X IF(PRSA.EQ.CLOSEW) GO TO 100 XC !CLOSE? X IF(PRSA.EQ.OPENW) GO TO 50 XC !OPEN? X OPNCLS=.FALSE. XC !LOSE X RETURN XC X50 IF(QOPEN(OBJ)) GO TO 200 XC !OPEN... IS IT? X CALL RSPEAK(SO) X OFLAG2(OBJ)=or(OFLAG2(OBJ),OPENBT) X RETURN XC X100 IF(.NOT.QOPEN(OBJ)) GO TO 200 XC !CLOSE... IS IT? X CALL RSPEAK(SC) X OFLAG2(OBJ)=and(OFLAG2(OBJ),not(OPENBT)) X RETURN XC X200 CALL RSPEAK(125+RND(3)) XC !DUMMY. X RETURN X END XC LIT-- IS ROOM LIT? XC XC DECLARATIONS XC X LOGICAL FUNCTION LIT(RM) X IMPLICIT INTEGER (A-Z) X LOGICAL QHERE X#include "rooms.h" X#include "rflag.h" X#include "objects.h" X#include "oflags.h" X#include "advers.h" XC X LIT=.TRUE. XC !ASSUME WINS X IF(and(RFLAG(RM),RLIGHT).NE.0) RETURN XC X DO 1000 I=1,OLNT XC !LOOK FOR LIT OBJ X IF(QHERE(I,RM)) GO TO 100 XC !IN ROOM? X OA=OADV(I) XC !NO X IF(OA.LE.0) GO TO 1000 XC !ON ADV? X IF(AROOM(OA).NE.RM) GO TO 1000 XC !ADV IN ROOM? XC XC OBJ IN ROOM OR ON ADV IN ROOM XC X100 IF(and(OFLAG1(I),ONBT).NE.0) RETURN X IF((and(OFLAG1(I),VISIBT).EQ.0).OR. X& ((and(OFLAG1(I),TRANBT).EQ.0).AND. X& (and(OFLAG2(I),OPENBT).EQ.0))) GO TO 1000 XC XC OBJ IS VISIBLE AND OPEN OR TRANSPARENT XC X DO 500 J=1,OLNT X IF((OCAN(J).EQ.I).AND.(and(OFLAG1(J),ONBT).NE.0)) X& RETURN X500 CONTINUE X1000 CONTINUE X LIT=.FALSE. X RETURN X END XC WEIGHT- RETURNS SUM OF WEIGHT OF QUALIFYING OBJECTS XC XC DECLARATIONS XC X INTEGER FUNCTION WEIGHT(RM,CN,AD) X IMPLICIT INTEGER (A-Z) X LOGICAL QHERE X#include "objects.h" XC X WEIGHT=0 X DO 100 I=1,OLNT XC !OMIT BIG FIXED ITEMS. X IF(OSIZE(I).GE.10000) GO TO 100 XC !IF FIXED, FORGET IT. X IF((QHERE(I,RM).AND.(RM.NE.0)).OR. X& ((OADV(I).EQ.AD).AND.(AD.NE.0))) GO TO 50 X J=I XC !SEE IF CONTAINED. X25 J=OCAN(J) XC !GET NEXT LEVEL UP. X IF(J.EQ.0) GO TO 100 XC !END OF LIST? X IF(J.NE.CN) GO TO 25 X50 WEIGHT=WEIGHT+OSIZE(I) X100 CONTINUE X RETURN X END END_OF_dso5.F if test 2654 -ne `wc -c <dso5.F`; then echo shar: \"dso5.F\" unpacked with wrong size! fi # end of overwriting check fi if test -f dso6.F -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"dso6.F\" else echo shar: Extracting \"dso6.F\" \(2359 characters\) sed "s/^X//" >dso6.F <<'END_OF_dso6.F' XC GHERE-- IS GLOBAL ACTUALLY IN THIS ROOM? XC XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142 XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED XC WRITTEN BY R. M. SUPNIK XC XC DECLARATIONS XC X LOGICAL FUNCTION GHERE(OBJ,RM) X IMPLICIT INTEGER(A-Z) X#include "rooms.h" X#include "rflag.h" X#include "rindex.h" XC X COMMON /STAR/ MBASE,STRBIT XC GHERE, PAGE 2 XC X GHERE=.TRUE. XC !ASSUME WINS. X GO TO (1000,1000,1000,1000,1000,1000, X& 1000,1000,1000,1000,1000, X& 2000,3000,4000,5000,5000,5000,6000, X& 7000,8000,9000,9100,8000,10000,11000),OBJ-STRBIT X CALL BUG(60,OBJ) XC XC 1000-- STARS ARE ALWAYS HERE XC X1000 RETURN XC XC 2000-- BIRD XC X2000 GHERE=((RM.GE.FORE1).AND.(RM.LT.CLEAR)).OR.(RM.EQ.MTREE) X RETURN XC XC 3000-- TREE XC X3000 GHERE=((RM.GE.FORE1).AND.(RM.LT.CLEAR)).AND.(RM.NE.FORE3) X RETURN XC XC 4000-- NORTH WALL XC X4000 GHERE=((RM.GE.BKVW).AND.(RM.LE.BKBOX)).OR.(RM.EQ.CPUZZ) X RETURN XC XC 5000-- EAST, SOUTH, WEST WALLS XC X5000 GHERE=((RM.GE.BKVW).AND.(RM.LT.BKBOX)).OR.(RM.EQ.CPUZZ) X RETURN XC XC 6000-- GLOBAL WATER XC X6000 GHERE=and(RFLAG(RM),(RWATER+RFILL)).NE.0 X RETURN XC XC 7000-- GLOBAL GUARDIANS XC X7000 GHERE=((RM.GE.MRC).AND.(RM.LE.MRD)).OR. X& ((RM.GE.MRCE).AND.(RM.LE.MRDW)).OR.(RM.EQ.INMIR) X RETURN XC XC 8000-- ROSE/CHANNEL XC X8000 GHERE=((RM.GE.MRA).AND.(RM.LE.MRD)).OR.(RM.EQ.INMIR) X RETURN XC XC 9000-- MIRROR XC 9100 PANEL XC X9100 IF(RM.EQ.FDOOR) RETURN XC !PANEL AT FDOOR. X9000 GHERE=((RM.GE.MRA).AND.(RM.LE.MRC)).OR. X& ((RM.GE.MRAE).AND.(RM.LE.MRCW)) X RETURN XC XC 10000-- MASTER XC X10000 GHERE=(RM.EQ.FDOOR).OR.(RM.EQ.NCORR).OR.(RM.EQ.PARAP).OR. X& (RM.EQ.CELL) X RETURN XC XC 11000-- LADDER XC X11000 GHERE=(RM.EQ.CPUZZ) X RETURN XC X END XC MRHERE-- IS MIRROR HERE? XC XC DECLARATIONS XC X INTEGER FUNCTION MRHERE(RM) X IMPLICIT INTEGER(A-Z) XC XC ROOMS X#include "rindex.h" X#include "flags.h" XC MRHERE, PAGE 2 XC X IF((RM.LT.MRAE).OR.(RM.GT.MRDW)) GO TO 100 XC XC RM IS AN E-W ROOM, MIRROR MUST BE N-S (MDIR= 0 OR 180) XC X MRHERE=1 XC !ASSUME MIRROR 1 HERE. X IF(MOD(RM-MRAE,2).EQ.(MDIR/180)) MRHERE=2 X RETURN XC XC RM IS NORTH OR SOUTH OF MIRROR. IF MIRROR IS N-S OR NOT XC WITHIN ONE ROOM OF RM, LOSE. XC X100 MRHERE=0 X IF((IABS(MLOC-RM).NE.1).OR.(MOD(MDIR,180).EQ.0)) RETURN XC XC RM IS WITHIN ONE OF MLOC, AND MDIR IS E-W XC X MRHERE=1 X IF(((RM.LT.MLOC).AND.(MDIR.LT.180)).OR. X& ((RM.GT.MLOC).AND.(MDIR.GT.180))) MRHERE=2 X RETURN X END END_OF_dso6.F if test 2359 -ne `wc -c <dso6.F`; then echo shar: \"dso6.F\" unpacked with wrong size! fi # end of overwriting check fi if test -f dso7.F -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"dso7.F\" else echo shar: Extracting \"dso7.F\" \(2920 characters\) sed "s/^X//" >dso7.F <<'END_OF_dso7.F' XC ENCRYP-- ENCRYPT PASSWORD XC XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142 XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED XC WRITTEN BY R. M. SUPNIK XC XC DECLARATIONS XC X SUBROUTINE ENCRYP(INW,OUTW) X IMPLICIT INTEGER(A-Z) X CHARACTER INW(6),OUTW(6) X CHARACTER KEYW(6),UKEYW(6) X INTEGER UINW(6) X DATA KEYW/'E','C','O','R','M','S'/ XC X UINWS=0 XC !UNBIASED INW SUM. X UKEYWS=0 XC !UNBIASED KEYW SUM. X J=1 XC !POINTER IN KEYWORD. X DO 100 I=1,6 XC !UNBIAS, COMPUTE SUMS. X UKEYW(I)=char(ichar(KEYW(I))-64) X IF(INW(J).LE.char(64)) J=1 X UINW(I)=ichar(ichar(INW(J))-64) X UKEYWS=UKEYWS+ichar(UKEYW(I)) X UINWS=UINWS+UINW(I) X J=J+1 X100 CONTINUE XC X USUM=MOD(UINWS,8)+(8*MOD(UKEYWS,8)) XC !COMPUTE MASK. X DO 200 I=1,6 X J=and(xor(xor(ichar(UINW(I)),ichar(UKEYW(I))),USUM),31) X USUM=MOD(USUM+1,32) X IF(J.GT.26) J=MOD(J,26) X OUTW(I)=char(MAX0(1,J)+64) X200 CONTINUE X RETURN XC X END XC CPGOTO-- MOVE TO NEXT STATE IN PUZZLE ROOM XC XC DECLARATIONS XC X SUBROUTINE CPGOTO(ST) X IMPLICIT INTEGER(A-Z) XC X COMMON /HYPER/ HFACTR X#include "rooms.h" X#include "rflag.h" X#include "rindex.h" X#include "objects.h" X#include "oflags.h" X#include "flags.h" XC CPGOTO, PAGE 2 XC X RFLAG(CPUZZ)=and(RFLAG(CPUZZ),not(RSEEN)) X DO 100 I=1,OLNT XC !RELOCATE OBJECTS. X IF((OROOM(I).EQ.CPUZZ).AND. X& (and(OFLAG2(I),(ACTRBT+VILLBT)).EQ.0)) X& CALL NEWSTA(I,0,CPHERE*HFACTR,0,0) X IF(OROOM(I).EQ.(ST*HFACTR)) X& CALL NEWSTA(I,0,CPUZZ,0,0) X100 CONTINUE X CPHERE=ST X RETURN XC X END XC CPINFO-- DESCRIBE PUZZLE ROOM XC XC DECLARATIONS XC X SUBROUTINE CPINFO(RMK,ST) X IMPLICIT INTEGER(A-Z) X INTEGER DGMOFT(8) X CHARACTER DGM(8),PICT(5),QMK XC X COMMON /CHAN/ INPCH,OUTCH,DBCH XC XC PUZZLE ROOM XC X COMMON /PUZZLE/ CPDR(16),CPWL(8),CPVEC(64) X#include "flags.h" XC XC FUNCTIONS AND LOCAL DATA XC XC X DATA DGMOFT/-9,-8,-7,-1,1,7,8,9/ X#ifdef PDP XC XC PICT, DGM and QMK have been changed from two to XC one character in length. Puzout prints two copies. XC X DATA PICT/'S','S','S',' ','M'/ X DATA QMK/'?'/ X#else X DATA PICT/'SS','SS','SS',' ','MM'/ X DATA QMK/'??'/ X#endif PDP XC CPINFO, PAGE 2 XC X CALL RSPEAK(RMK) X DO 100 I=1,8 X J=DGMOFT(I) X DGM(I)=PICT(CPVEC(ST+J)+4) XC !GET PICTURE ELEMENT. X IF((IABS(J).EQ.1).OR.(IABS(J).EQ.8)) GO TO 100 X K=8 X IF(J.LT.0) K=-8 XC !GET ORTHO DIR. X L=J-K X IF((CPVEC(ST+K).NE.0).AND.(CPVEC(ST+L).NE.0)) X& DGM(I)=QMK X100 CONTINUE X#ifdef PDP X call puzout(DGM(1)) X#else X WRITE(OUTCH,10) DGM X#endif XC X IF(ST.EQ.10) CALL RSPEAK(870) XC !AT HOLE? X IF(ST.EQ.37) CALL RSPEAK(871) XC !AT NICHE? X I=872 XC !DOOR OPEN? X IF(CPOUTF) I=873 X IF(ST.EQ.52) CALL RSPEAK(I) XC !AT DOOR? X IF(CPVEC(ST+1).EQ.-2) CALL RSPEAK(874) XC !EAST LADDER? X IF(CPVEC(ST-1).EQ.-3) CALL RSPEAK(875) XC !WEST LADDER? X RETURN XC X#ifndef PDP X10 FORMAT(' |',A2,1X,A2,1X,A2,'|'/, X& ' West |',A2,' .. ',A2,'| East',/ X& ' |',A2,1X,A2,1X,A2,'|') X#endif PDP XC X END END_OF_dso7.F if test 2920 -ne `wc -c <dso7.F`; then echo shar: \"dso7.F\" unpacked with wrong size! fi # end of overwriting check fi if test -f dungeon.sh -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"dungeon.sh\" else echo shar: Extracting \"dungeon.sh\" \(249 characters\) sed "s/^X//" >dungeon.sh <<'END_OF_dungeon.sh' X: sh script to invoke the dungeon game on the pdp XDLIB=/usr/games/lib/dunlib Xcase $# in X 0) $DLIB/listen| $DLIB/dungpdp| $DLIB/speak;; X 1) $DLIB/listen dungeon.sav| $DLIB/dungpdp| $DLIB/speak;; X *) $DLIB/listen $2| $DLIB/dungpdp| $DLIB/speak;; Xesac END_OF_dungeon.sh if test 249 -ne `wc -c <dungeon.sh`; then echo shar: \"dungeon.sh\" unpacked with wrong size! fi chmod +x dungeon.sh # end of overwriting check fi if test -f exits.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"exits.h\" else echo shar: Extracting \"exits.h\" \(45 characters\) sed "s/^X//" >exits.h <<'END_OF_exits.h' XC XC EXITS XC X COMMON /EXITS/ XLNT,TRAVEL(900) END_OF_exits.h if test 45 -ne `wc -c <exits.h`; then echo shar: \"exits.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f files.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"files.h\" else echo shar: Extracting \"files.h\" \(159 characters\) sed "s/^X//" >files.h <<'END_OF_files.h' X#ifndef DDIR X#define DDIR '/usr/games/lib/dunlib X#endif X X#define INDXFILE DDIR/dindx.dat' X#define TEXTFILE DDIR/dtext.dat' X#define RINDEXFILE DDIR/rtext.dat' END_OF_files.h if test 159 -ne `wc -c <files.h`; then echo shar: \"files.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f flags.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"flags.h\" else echo shar: Extracting \"flags.h\" \(1091 characters\) sed "s/^X//" >flags.h <<'END_OF_flags.h' XC XC FLAGS XC X LOGICAL TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF X LOGICAL DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF X LOGICAL MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF X LOGICAL EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF X LOGICAL GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF X LOGICAL GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF X LOGICAL MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF X LOGICAL FOLLWF,SPELLF,CPOUTF,CPUSHF X COMMON /FINDEX/ TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF, X& DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF, X& MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF, X& EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF, X& GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF, X& GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF, X& MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF, X& FOLLWF,SPELLF,CPOUTF,CPUSHF X COMMON /FINDEX/ BTIEF,BINFF X COMMON /FINDEX/ RVMNT,RVCLR,RVCYC,RVSND,RVGUA X COMMON /FINDEX/ ORRUG,ORCAND,ORMTCH,ORLAMP X COMMON /FINDEX/ MDIR,MLOC,POLEUF X COMMON /FINDEX/ QUESNO,NQATT,CORRCT X COMMON /FINDEX/ LCELL,PNUMB,ACELL,DCELL,CPHERE X X LOGICAL FLAGS(46) X EQUIVALENCE (FLAGS(1),TROLLF) X INTEGER SWITCH(22) X EQUIVALENCE (SWITCH(1), BTIEF) END_OF_flags.h if test 1091 -ne `wc -c <flags.h`; then echo shar: \"flags.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f gamestate.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"gamestate.h\" else echo shar: Extracting \"gamestate.h\" \(67 characters\) sed "s/^X//" >gamestate.h <<'END_OF_gamestate.h' XC XC GAME STATE XC X LOGICAL TELFLG X COMMON /PLAY/ WINNER,HERE,TELFLG END_OF_gamestate.h if test 67 -ne `wc -c <gamestate.h`; then echo shar: \"gamestate.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f io.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"io.h\" else echo shar: Extracting \"io.h\" \(101 characters\) sed "s/^X//" >io.h <<'END_OF_io.h' XC XC I/O VARIABLES XC X CHARACTER INBUF(78) X COMMON /INPUT/ INLNT,INBUF X COMMON /CHAN/ INPCH,OUTCH,DBCH END_OF_io.h if test 101 -ne `wc -c <io.h`; then echo shar: \"io.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f lightp.F -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"lightp.F\" else echo shar: Extracting \"lightp.F\" \(2424 characters\) sed "s/^X//" >lightp.F <<'END_OF_lightp.F' XC LIGHTP- LIGHT PROCESSOR XC XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142 XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED XC WRITTEN BY R. M. SUPNIK XC XC DECLARATIONS XC X LOGICAL FUNCTION LIGHTP(OBJ) X IMPLICIT INTEGER (A-Z) X LOGICAL QON X#include "parser.h" X#include "gamestate.h" X#include "objects.h" X#include "oflags.h" X#include "oindex.h" X#include "clock.h" X X#include "verbs.h" X#include "flags.h" XC XC FUNCTIONS AND DATA XC X QON(R)=and(OFLAG1(R),ONBT).NE.0 XC LIGHTP, PAGE 2 XC X LIGHTP=.TRUE. XC !ASSUME WINS X FLOBTS=FLAMBT+LITEBT+ONBT X IF(OBJ.NE.CANDL) GO TO 20000 XC !CANDLE? X IF(ORCAND.NE.0) GO TO 19100 XC !FIRST REF? X ORCAND=1 XC !YES, CANDLES ARE X CTICK(CEVCND)=50 XC !BURNING WHEN SEEN. XC X19100 IF(PRSI.EQ.CANDL) GO TO 10 XC !IGNORE IND REFS. X IF(PRSA.NE.TRNOFW) GO TO 19200 XC !TURN OFF? X I=513 XC !ASSUME OFF. X IF(QON(CANDL)) I=514 XC !IF ON, DIFFERENT. X CFLAG(CEVCND)=.FALSE. XC !DISABLE COUNTDOWN. X OFLAG1(CANDL)=and(OFLAG1(CANDL), not(ONBT)) X CALL RSPEAK(I) X RETURN XC X19200 IF((PRSA.NE.BURNW).AND.(PRSA.NE.TRNONW)) GO TO 10 X IF(and(OFLAG1(CANDL),LITEBT).NE.0) GO TO 19300 X CALL RSPEAK(515) XC !CANDLES TOO SHORT. X RETURN XC X19300 IF(PRSI.NE.0) GO TO 19400 XC !ANY FLAME? X CALL RSPEAK(516) XC !NO, LOSE. X PRSWON=.FALSE. X RETURN XC X19400 IF((PRSI.NE.MATCH).OR. .NOT.QON(MATCH)) GO TO 19500 X I=517 XC !ASSUME OFF. X IF(QON(CANDL)) I=518 XC !IF ON, JOKE. X OFLAG1(CANDL)=or(OFLAG1(CANDL),ONBT) X CFLAG(CEVCND)=.TRUE. XC !RESUME COUNTDOWN. X CALL RSPEAK(I) X RETURN XC X19500 IF((PRSI.NE.TORCH).OR. .NOT.QON(TORCH)) GO TO 19600 X IF(QON(CANDL)) GO TO 19700 XC !ALREADY ON? X CALL NEWSTA(CANDL,521,0,0,0) XC !NO, VAPORIZE. X RETURN XC X19600 CALL RSPEAK(519) XC !CANT LIGHT WITH THAT. X RETURN XC X19700 CALL RSPEAK(520) XC !ALREADY ON. X RETURN XC X20000 IF(OBJ.NE.MATCH) CALL BUG(6,OBJ) X IF((PRSA.NE.TRNONW).OR.(PRSO.NE.MATCH)) GO TO 20500 X IF(ORMTCH.NE.0) GO TO 20100 XC !ANY MATCHES LEFT? X CALL RSPEAK(183) XC !NO, LOSE. X RETURN XC X20100 ORMTCH=ORMTCH-1 XC !DECREMENT NO MATCHES. X OFLAG1(MATCH)=or(OFLAG1(MATCH),FLOBTS) X CTICK(CEVMAT)=2 XC !COUNTDOWN. X CALL RSPEAK(184) X RETURN XC X20500 IF((PRSA.NE.TRNOFW).OR.(and(OFLAG1(MATCH),ONBT).EQ.0)) X& GO TO 10 X OFLAG1(MATCH)=and(OFLAG1(MATCH), not(FLOBTS)) X CTICK(CEVMAT)=0 X CALL RSPEAK(185) X RETURN XC XC HERE FOR FALSE RETURN XC X10 LIGHTP=.FALSE. X RETURN X END END_OF_lightp.F if test 2424 -ne `wc -c <lightp.F`; then echo shar: \"lightp.F\" unpacked with wrong size! fi # end of overwriting check fi if test -f listen.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"listen.c\" else echo shar: Extracting \"listen.c\" \(1090 characters\) sed "s/^X//" >listen.c <<'END_OF_listen.c' X#include <stdio.h> X X#ifndef CINDEXFILE X#define CINDEXFILE "/usr/games/lib/dunlib/dindx.dat" X#endif X Xmain(numargs, argptr) X Xint numargs; Xchar *argptr[]; X{ Xint chr; XFILE *fpin; X X X fprintf(stderr,"Yawn... \n"); X X/* open init file */ X fpin = fopen(CINDEXFILE, "r"); X if (fpin == NULL) { X fclose(fpin); X fprintf(stderr,"Init file missing.\n"); X exit(0); X } X X/* transfer init file into the pipe */ X X while ((chr = getc(fpin)) != EOF) X putchar((char)chr); X X fclose(fpin); X X/* check for restore file argument */ X X if(numargs > 1){ X fpin = fopen(*++argptr,"r"); X if( fpin == NULL) X fprintf(stderr,"Restore file missing.\n"); X X else { X putchar('R'); X while((chr = getc(fpin)) != EOF) X putchar((char)chr); X fprintf(stderr,"Now, where were we...\n"); X fclose(fpin); X } X } X X fprintf(stderr,"Oh hello .. \n"); X X/* send end of init data flag */ X X putchar('?'); X fflush(stdout); X X/* send lines of standard input to pipe */ X X while ((chr = getchar()) != EOF){ X putchar(chr); X if (chr == '\n') X fflush(stdout); X } X X/* end the process */ X fprintf(stderr,"Goodnight .. \n"); X} END_OF_listen.c if test 1090 -ne `wc -c <listen.c`; then echo shar: \"listen.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f mindex.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"mindex.h\" else echo shar: Extracting \"mindex.h\" \(52 characters\) sed "s/^X//" >mindex.h <<'END_OF_mindex.h' XC XC MESSAGE INDEX XC X COMMON /RMSG/ MLNT,RTEXT(1050) END_OF_mindex.h if test 52 -ne `wc -c <mindex.h`; then echo shar: \"mindex.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f oindex.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"oindex.h\" else echo shar: Extracting \"oindex.h\" \(1068 characters\) sed "s/^X//" >oindex.h <<'END_OF_oindex.h' XC X COMMON /OINDEX/ GARLI,FOOD,GUNK,COAL,MACHI,DIAMO,TCASE,BOTTL X COMMON /OINDEX/ WATER,ROPE,KNIFE,SWORD,LAMP,BLAMP,RUG X COMMON /OINDEX/ LEAVE,TROLL,AXE X COMMON /OINDEX/ RKNIF,KEYS,ICE,BAR X COMMON /OINDEX/ COFFI,TORCH,TBASK,FBASK,IRBOX X COMMON /OINDEX/ GHOST,TRUNK,BELL,BOOK,CANDL X COMMON /OINDEX/ MATCH,TUBE,PUTTY,WRENC,SCREW,CYCLO,CHALI X COMMON /OINDEX/ THIEF,STILL,WINDO,GRATE,DOOR X COMMON /OINDEX/ HPOLE,LEAK,RBUTT,RAILI X COMMON /OINDEX/ POT,STATU,IBOAT,DBOAT,PUMP,RBOAT X COMMON /OINDEX/ STICK,BUOY,SHOVE,BALLO,RECEP,GUANO X COMMON /OINDEX/ BROPE,HOOK1,HOOK2,SAFE,SSLOT,BRICK,FUSE X COMMON /OINDEX/ GNOME,BLABE,DBALL,TOMB X COMMON /OINDEX/ LCASE,CAGE,RCAGE,SPHER,SQBUT X COMMON /OINDEX/ FLASK,POOL,SAFFR,BUCKE,ECAKE,ORICE,RDICE,BLICE X COMMON /OINDEX/ ROBOT,FTREE,BILLS,PORTR,SCOL,ZGNOM X COMMON /OINDEX/ EGG,BEGG,BAUBL,CANAR,BCANA X COMMON /OINDEX/ YLWAL,RDWAL,PINDR,RBEAM X COMMON /OINDEX/ ODOOR,QDOOR,CDOOR,NUM1,NUM8 X COMMON /OINDEX/ WARNI,CSLIT,GCARD,STLDR X COMMON /OINDEX/ HANDS,WALL,LUNGS,SAILO,AVIAT,TEETH X COMMON /OINDEX/ ITOBJ,EVERY,VALUA,OPLAY,WNORT,GWATE,MASTER END_OF_oindex.h if test 1068 -ne `wc -c <oindex.h`; then echo shar: \"oindex.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f parser.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"parser.h\" else echo shar: Extracting \"parser.h\" \(571 characters\) sed "s/^X//" >parser.h <<'END_OF_parser.h' XC XC PARSER OUTPUT XC X LOGICAL PRSWON X COMMON /PRSVEC/ PRSA,PRSI,PRSO,PRSWON,PRSCON XC XC PARSER STATE XC X COMMON /ORPHS/ OFLAG,OACT,OSLOT,OPREP,ONAME X INTEGER ORP(5) X EQUIVALENCE (OFLAG, ORP) XC X COMMON /LAST/ LASTIT XC X COMMON /PV/ ACT,O1,O2,P1,P2 X INTEGER OBJVEC(2),PRPVEC(2),PVEC(5) X EQUIVALENCE (OBJVEC(1),O1),(PRPVEC(1),P1),(PVEC,ACT) XC X COMMON /SYNTAX/ VFLAG,DOBJ,DFL1,DFL2,DFW1,DFW2, X& IOBJ,IFL1,IFL2,IFW1,IFW2 X INTEGER SYN(11) X EQUIVALENCE (VFLAG, SYN) XC X COMMON /SYNFLG/ SDIR,SIND,SSTD,SFLIP,SDRIV,SVMASK XC X COMMON /OBJFLG/ VABIT,VRBIT,VTBIT,VCBIT,VEBIT,VFBIT,VPMASK END_OF_parser.h if test 571 -ne `wc -c <parser.h`; then echo shar: \"parser.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f puzzle.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"puzzle.h\" else echo shar: Extracting \"puzzle.h\" \(68 characters\) sed "s/^X//" >puzzle.h <<'END_OF_puzzle.h' XC XC PUZZLE ROOM STATE XC X COMMON /PUZZLE/ CPDR(16),CPWL(8),CPVEC(64) END_OF_puzzle.h if test 68 -ne `wc -c <puzzle.h`; then echo shar: \"puzzle.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f rflag.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"rflag.h\" else echo shar: Extracting \"rflag.h\" \(97 characters\) sed "s/^X//" >rflag.h <<'END_OF_rflag.h' XC X COMMON /RFLAG/ RSEEN,RLIGHT,RLAND,RWATER,RAIR, X& RSACRD,RFILL,RMUNG,RBUCK,RHOUSE,RNWALL,REND END_OF_rflag.h if test 97 -ne `wc -c <rflag.h`; then echo shar: \"rflag.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f rooms.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"rooms.h\" else echo shar: Extracting \"rooms.h\" \(193 characters\) sed "s/^X//" >rooms.h <<'END_OF_rooms.h' XC XC ROOMS XC X COMMON /ROOMS/ RLNT,RDESC2,RDESC1(200),REXIT(200), X& RACTIO(200),RVAL(200),RFLAG(200) X INTEGER RRAND(200) X EQUIVALENCE (RVAL,RRAND) X INTEGER EQR(200,5) X EQUIVALENCE (RDESC1, EQR) END_OF_rooms.h if test 193 -ne `wc -c <rooms.h`; then echo shar: \"rooms.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f rtim.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"rtim.c\" else echo shar: Extracting \"rtim.c\" \(906 characters\) sed "s/^X//" >rtim.c <<'END_OF_rtim.c' X/* X * Interface routines for dungeon. X * These routines are for functions expected by the game X * that are not available in the Unix/f77 library. X */ X X/* routine to get time in hours minutes and seconds */ X X#include <sys/types.h> X#include <sys/timeb.h> X/* for V7 this should be <time.h> */ X#include <sys/time.h> X X Xlong time(); Xstruct tm *localtime(); Xstruct tm *tmptr; Xlong timebuf; X Xitime_(hrptr,minptr,secptr) X Xint *hrptr,*minptr,*secptr; X{ X X time(&timebuf); X tmptr = localtime(&timebuf); X X *hrptr = tmptr->tm_hour; X *minptr = tmptr->tm_min; X *secptr = tmptr->tm_sec; X X return; X} X X/* random number initializer */ Xinirnd_(seedptr) X Xint *seedptr; X{ Xint seed; X X seed = *seedptr; X srand(seed); X return; X} X X/* random number generator */ Xrnd_(maxval) X Xint *maxval; X{ X/* note: returned random number ranges from 0 to maxval */ X Xint rndval; X X rndval = rand(); X X rndval = rndval % *maxval; X X return(rndval); X} END_OF_rtim.c if test 906 -ne `wc -c <rtim.c`; then echo shar: \"rtim.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f screen.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"screen.h\" else echo shar: Extracting \"screen.h\" \(98 characters\) sed "s/^X//" >screen.h <<'END_OF_screen.h' XC XC SCREEN OF LIGHT XC X COMMON /SCREEN/ FROMDR,SCOLRM,SCOLAC X COMMON /SCREEN/ SCOLDR(8),SCOLWL(12) END_OF_screen.h if test 98 -ne `wc -c <screen.h`; then echo shar: \"screen.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f state.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"state.h\" else echo shar: Extracting \"state.h\" \(90 characters\) sed "s/^X//" >state.h <<'END_OF_state.h' X COMMON /STATE/ MOVES,DEATHS,RWSCOR,MXSCOR,MXLOAD, X& LTSHFT,BLOC,MUNGRM,HS,EGSCOR,EGMXSC END_OF_state.h if test 90 -ne `wc -c <state.h`; then echo shar: \"state.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f villians.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"villians.h\" else echo shar: Extracting \"villians.h\" \(222 characters\) sed "s/^X//" >villians.h <<'END_OF_villians.h' XC XC VILLAINS AND DEMONS XC X LOGICAL THFFLG,SWDACT,THFACT X COMMON /HACK/ THFPOS,THFFLG,THFACT,SWDACT,SWDSTA XC X COMMON /VILL/ VLNT,VILLNS(4),VPROB(4),VOPPS(4),VBEST(4),VMELEE(4) XC X INTEGER EQV(4,5) X EQUIVALENCE (VILLNS, EQV) END_OF_villians.h if test 222 -ne `wc -c <villians.h`; then echo shar: \"villians.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f vocab.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"vocab.h\" else echo shar: Extracting \"vocab.h\" \(556 characters\) sed "s/^X//" >vocab.h <<'END_OF_vocab.h' XC XC VOCABULARIES XC X COMMON /BUZVOC/ BVOC(20) X COMMON /PRPVOC/ PVOC(45) X COMMON /DIRVOC/ DVOC(75) X INTEGER AVOC(450) X COMMON /ADJVOC/ AVOC1(184),AVOC2(114),AVOC3(106),AVOCND X INTEGER VVOC(950) X COMMON /VRBVOC/ VVOC1(92),VVOC1A(108),VVOC1B(38),VVOC2(104), X& VVOC3(136), X& VVOC4(116),VVOC5(134),VVOC6(117),VVOC7(89),VVOCND X INTEGER OVOC(1050) X COMMON /OBJVOC/ OVOC1(159),OVOC2(144),OVOC3(150),OVOC4(128), X& OVOC5(111),OVOC6(104),OVOC6A(97),OVOC7(127),OVOCND XC X EQUIVALENCE (VVOC(1),VVOC1(1)) X EQUIVALENCE (AVOC(1),AVOC1(1)) X EQUIVALENCE (OVOC(1),OVOC1(1)) END_OF_vocab.h if test 556 -ne `wc -c <vocab.h`; then echo shar: \"vocab.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f xpars.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xpars.h\" else echo shar: Extracting \"xpars.h\" \(95 characters\) sed "s/^X//" >xpars.h <<'END_OF_xpars.h' XC X COMMON /XPARS/ XRMASK,XDMASK,XFMASK,XFSHFT,XASHFT, X& XELNT(4),XNORM,XNO,XCOND,XDOOR,XLFLAG END_OF_xpars.h if test 95 -ne `wc -c <xpars.h`; then echo shar: \"xpars.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f xsrch.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xsrch.h\" else echo shar: Extracting \"xsrch.h\" \(81 characters\) sed "s/^X//" >xsrch.h <<'END_OF_xsrch.h' XC X COMMON /XSRCH/ XMIN,XMAX,XDOWN,XUP, X& XNORTH,XSOUTH,XENTER,XEXIT,XEAST,XWEST END_OF_xsrch.h if test 81 -ne `wc -c <xsrch.h`; then echo shar: \"xsrch.h\" unpacked with wrong size! fi # end of overwriting check fi echo shar: End of archive 7 \(of 14\). cp /dev/null ark7isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 14 archives. rm -f ark[1-9]isdone ark1[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0