1 # 2 /* ADVENTURE -- Jim Gillogly, Jul 1977 3 * This program is a re-write of ADVENT, written in FORTRAN mostly by 4 * Don Woods of SAIL. In most places it is as nearly identical to the 5 * original as possible given the language and word-size differences. 6 * A few places, such as the message arrays and travel arrays were changed 7 * to reflect the smaller core size and word size. The labels of the 8 * original are reflected in this version, so that the comments of the 9 * fortran are still applicable here. 10 * 11 * The data file distributed with the fortran source is assumed to be called 12 * "glorkz" in the directory where the program is first run. 13 */ 14 15 static char hdr_sccsid[] = " hdr.h 4.1 82/05/11 "; 16 17 /* hdr.h */ 18 /* hdr.h: included by c advent files */ 19 20 extern int setup; /* changed by savec & init */ 21 int datfd; /* message file descriptor */ 22 int delhit; 23 int yea; 24 25 #define TAB 011 26 #define LF 012 27 #define FLUSHLINE while (getchar()!='\n') 28 #define FLUSHLF while (next()!=LF) 29 30 int loc,newloc,oldloc,oldlc2,wzdark,SHORT,gaveup,kq,k,k2; 31 char *wd1,*wd2; /* the complete words */ 32 int verb,obj,spk; 33 extern int blklin; 34 int saved,savet,mxscor,latncy; 35 36 #define MAXSTR 20 /* max length of user's words */ 37 38 #define HTSIZE 512 /* max number of vocab words */ 39 struct hashtab /* hash table for vocabulary */ 40 { int val; /* word type &index (ktab) */ 41 char *atab; /* pointer to actual string */ 42 } voc[HTSIZE]; 43 44 #define DATFILE "glorkz" /* all the original msgs */ 45 #define TMPFILE "tmp.foo.baz" /* just the text msgs */ 46 47 48 struct text 49 { int seekadr; /* DATFILE must be < 2**16 */ 50 int txtlen; /* length of msg starting here */ 51 }; 52 53 #define RTXSIZ 205 54 struct text rtext[RTXSIZ]; /* random text messages */ 55 56 #define MAGSIZ 35 57 struct text mtext[MAGSIZ]; /* magic messages */ 58 59 int clsses; 60 #define CLSMAX 12 61 struct text ctext[CLSMAX]; /* classes of adventurer */ 62 int cval[CLSMAX]; 63 64 struct text ptext[101]; /* object descriptions */ 65 66 #define LOCSIZ 141 /* number of locations */ 67 struct text ltext[LOCSIZ]; /* long loc description */ 68 struct text stext[LOCSIZ]; /* short loc descriptions */ 69 70 struct travlist /* direcs & conditions of travel*/ 71 { struct travlist *next; /* ptr to next list entry */ 72 int conditions; /* m in writeup (newloc / 1000) */ 73 int tloc; /* n in writeup (newloc % 1000) */ 74 int tverb; /* the verb that takes you there*/ 75 } *travel[LOCSIZ],*tkk; /* travel is closer to keys(...)*/ 76 77 int atloc[LOCSIZ]; 78 79 int plac[101]; /* initial object placement */ 80 int fixd[101],fixed[101]; /* location fixed? */ 81 82 int actspk[35]; /* rtext msg for verb <n> */ 83 84 int cond[LOCSIZ]; /* various condition bits */ 85 86 extern int setbit[16]; /* bit defn masks 1,2,4,... */ 87 88 int hntmax; 89 int hints[20][5]; /* info on hints */ 90 int hinted[20],hintlc[20]; 91 92 int place[101], prop[101],link[201]; 93 int abb[LOCSIZ]; 94 95 int maxtrs,tally,tally2; /* treasure values */ 96 97 #define FALSE 0 98 #define TRUE 1 99 100 int keys,lamp,grate,cage,rod,rod2,steps,/* mnemonics */ 101 bird,door,pillow,snake,fissur,tablet,clam,oyster,magzin, 102 dwarf,knife,food,bottle,water,oil,plant,plant2,axe,mirror,dragon, 103 chasm,troll,troll2,bear,messag,vend,batter, 104 nugget,coins,chest,eggs,tridnt,vase,emrald,pyram,pearl,rug,chain, 105 spices, 106 back,look,cave,null,entrnc,dprssn, 107 say,lock,throw,find,invent; 108 109 int chloc,chloc2,dseen[7],dloc[7], /* dwarf stuff */ 110 odloc[7],dflag,daltlc; 111 112 int tk[21],stick,dtotal,attack; 113 int turns,lmwarn,iwest,knfloc,detail, /* various flags & counters */ 114 abbnum,maxdie,numdie,holdng,dkill,foobar,bonus,clock1,clock2, 115 saved,closng,panic,closed,scorng; 116 117 int demo,newloc,limit; 118 119 char *malloc(); 120