2 * Copyright (c) 1991, 1993
3 * The Regents of the University of California. All rights reserved.
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.
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 * 3. Neither the name of the University nor the names of its contributors
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
22 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * @(#)hdr.h 8.1 (Berkeley) 5/31/93
37 /* ADVENTURE -- Jim Gillogly, Jul 1977
38 * This program is a re-write of ADVENT, written in FORTRAN mostly by
39 * Don Woods of SAIL. In most places it is as nearly identical to the
40 * original as possible given the language and word-size differences.
41 * A few places, such as the message arrays and travel arrays were changed
42 * to reflect the smaller core size and word size. The labels of the
43 * original are reflected in this version, so that the comments of the
44 * fortran are still applicable here.
46 * The data file distributed with the fortran source is assumed to be called
47 * "glorkz" in the directory where the program is first run.
49 * The original FORTRAN version can be found at
50 * <URL:ftp://ftp.gmd.de/if-archive/games/source/advent-original.tar.gz>.
52 * $FreeBSD: src/games/adventure/hdr.h,v 1.5.2.1 2001/03/05 11:43:11 kris Exp $
55 /* hdr.h: included by c advent files */
56 #include <sys/types.h>
59 int datfd
; /* message file descriptor */
60 volatile sig_atomic_t delhit
;
62 extern char data_file
[]; /* Virtual data file */
66 #define FLUSHLINE do { int flushline_ch; while ((flushline_ch = getchar()) != EOF && flushline_ch != '\n'); } while (0)
67 #define FLUSHLF while (next()!=LF)
69 int loc
, newloc
, oldloc
, oldlc2
, wzdark
, gaveup
, kq
, k
, k2
;
70 char *wd1
, *wd2
; /* the complete words */
73 int saved
, savet
, mxscor
, latncy
;
75 #define SHORT 50 /* How short is a demo game? */
77 #define MAXSTR 20 /* max length of user's words */
79 #define HTSIZE 512 /* max number of vocab words */
80 struct hashtab
{ /* hash table for vocabulary */
81 int val
; /* word type &index (ktab) */
82 char *atab
; /* pointer to actual string */
85 #define SEED 1815622 /* "Encryption" seed */
88 char *seekadr
; /* Msg start in virtual disk */
89 int txtlen
; /* length of msg starting here */
93 struct text rtext
[RTXSIZ
]; /* random text messages */
96 struct text mtext
[MAGSIZ
]; /* magic messages */
100 struct text ctext
[CLSMAX
]; /* classes of adventurer */
103 struct text ptext
[101]; /* object descriptions */
105 #define LOCSIZ 141 /* number of locations */
106 struct text ltext
[LOCSIZ
]; /* long loc description */
107 struct text stext
[LOCSIZ
]; /* short loc descriptions */
109 struct travlist
{ /* direcs & conditions of travel */
110 struct travlist
*next
; /* ptr to next list entry */
111 int conditions
; /* m in writeup (newloc / 1000) */
112 int tloc
; /* n in writeup (newloc % 1000) */
113 int tverb
; /* the verb that takes you there */
114 } *travel
[LOCSIZ
], *tkk
; /* travel is closer to keys(...) */
118 int plac
[101]; /* initial object placement */
119 int fixd
[101], fixed
[101]; /* location fixed? */
121 int actspk
[35]; /* rtext msg for verb <n> */
123 int cond
[LOCSIZ
]; /* various condition bits */
125 extern int setbit
[16]; /* bit defn masks 1,2,4,... */
128 int hints
[20][5]; /* info on hints */
129 int hinted
[20], hintlc
[20];
131 int place
[101], prop
[101], linkx
[201];
134 int maxtrs
, tally
, tally2
; /* treasure values */
139 int axe
, back
, batter
, bear
, bird
, bottle
, /* mnemonics */
140 cage
, cave
, chain
, chasm
, chest
, clam
, coins
, door
, dprssn
, dragon
,
141 dwarf
, eggs
, emrald
, enter
, entrnc
, find
, fissur
, food
, grate
, invent
,
142 keys
, knife
, lamp
, lock
, look
, magzin
, messag
, mirror
, nugget
, null
,
143 oil
, oyster
, pearl
, pillow
, plant
, plant2
, pour
, pyram
, rod
, rod2
,
144 rug
, say
, snake
, spices
, steps
, stream
, tablet
, throw, tridnt
, troll
,
145 troll2
, vase
, vend
, water
;
147 int chloc
, chloc2
, daltlc
, dflag
, dloc
[7], /* dwarf stuff */
150 int attack
, dtotal
, stick
, tk
[21];
152 int abbnum
, bonus
, clock1
, clock2
, closed
, /* various flags and counters */
153 closng
, detail
, dkill
, foobar
, holdng
, iwest
, knfloc
,
154 lmwarn
, maxdie
, numdie
, panic
, scorng
, turns
;
159 int bug(int n
) __dead2
;
160 void carry(int, int);
161 void caveclose(void);
162 void checkhints(void);
165 unsigned long crc(const char *ptr
, int nr
);
166 void crc_start(void);
168 void datime(int *d
, int *t
);
169 char *decr(const char *, const char *, const char *, const char *, const char *);
171 void done(int entry
) __dead2
;
172 void drop(int object
, int where
);
175 int forced(int locc
);
176 void getin(char **wrd1
, char **wrd2
);
181 int liqloc(int locc
);
187 void pspeak(int m
, int skip
);
188 int put(int, int, int);
191 int restore(const char *infile
);
193 int save(const char *);
195 void speak(const struct text
*);
198 int toting(int objj
);
199 void trapdel(int sig
);
208 int vocab(const char *, int, int);
209 int yes(int x
, int y
, int z
);
210 int yesm(int x
, int y
, int z
);
212 /* We need to get a little tricky to avoid strings */
213 #define DECR(a,b,c,d,e) decr(#a,#b,#c,#d,#e)