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