
adventure(6). The handling of this variable is somewhat confusing, since it is used for two different purposes (controlling the time required before a saved game can be restored, and controlling various aspects of dwarf behaviour); in fact, it is also declared twice in hdr.h. Except possibly when saving a game fails, these uses can never interfere; when used for controlling dwarf behaviour, we always have saved == -1. This can be better understood with reference to the original PDP-10 FORTRAN source (URL in patch, since hdr.h references the comments of the FORTRAN as still relevant to this version) of which the C version is a direct translation: the wrong value for `saved' meant that someone was cheating and had bypassed normal initialisation. Saving was done by halting and telling the user to save their core image, so the question of carrying on after saving failed to open the output file did not arise. This patch separates the uses of `saved' into uses of two separate variables. Closes PR 8005 by Joseph Myers <jsm28@cam.ac.uk>
168 lines
6.3 KiB
C
168 lines
6.3 KiB
C
/* $NetBSD: hdr.h,v 1.7 1999/07/16 01:38:20 hubertf Exp $ */
|
|
|
|
/*-
|
|
* Copyright (c) 1991, 1993
|
|
* The Regents of the University of California. All rights reserved.
|
|
*
|
|
* The game adventure was originally written in Fortran by Will Crowther
|
|
* and Don Woods. It was later translated to C and enhanced by Jim
|
|
* Gillogly. This code is derived from software contributed to Berkeley
|
|
* by Jim Gillogly at The Rand Corporation.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. All advertising materials mentioning features or use of this software
|
|
* must display the following acknowledgement:
|
|
* This product includes software developed by the University of
|
|
* California, Berkeley and its contributors.
|
|
* 4. Neither the name of the University nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*
|
|
* @(#)hdr.h 8.1 (Berkeley) 5/31/93
|
|
*/
|
|
|
|
/* ADVENTURE -- Jim Gillogly, Jul 1977
|
|
* This program is a re-write of ADVENT, written in FORTRAN mostly by
|
|
* Don Woods of SAIL. In most places it is as nearly identical to the
|
|
* original as possible given the language and word-size differences.
|
|
* A few places, such as the message arrays and travel arrays were changed
|
|
* to reflect the smaller core size and word size. The labels of the
|
|
* original are reflected in this version, so that the comments of the
|
|
* fortran are still applicable here.
|
|
*
|
|
* The data file distributed with the fortran source is assumed to be called
|
|
* "glorkz" in the directory where the program is first run.
|
|
*
|
|
* The original FORTRAN version can be found at
|
|
* <URL:ftp://ftp.gmd.de/if-archive/games/source/advent-original.tar.gz>.
|
|
*/
|
|
|
|
/* hdr.h: included by c advent files */
|
|
|
|
#include <signal.h>
|
|
|
|
int datfd; /* message file descriptor */
|
|
volatile sig_atomic_t delhit;
|
|
int yea;
|
|
extern char data_file[]; /* Virtual data file */
|
|
|
|
#define TAB 011
|
|
#define LF 012
|
|
#define FLUSHLINE do { int flushline_ch; while ((flushline_ch = getchar()) != EOF && flushline_ch != '\n'); } while (0)
|
|
#define FLUSHLF while (next()!=LF)
|
|
|
|
int loc, newloc, oldloc, oldlc2, wzdark, gaveup, kq, k, k2;
|
|
char *wd1, *wd2; /* the complete words */
|
|
int verb, obj, spk;
|
|
extern int blklin;
|
|
int saveday, savet, mxscor, latncy;
|
|
|
|
#define SHORT 50 /* How short is a demo game? */
|
|
|
|
#define MAXSTR 20 /* max length of user's words */
|
|
|
|
#define HTSIZE 512 /* max number of vocab words */
|
|
struct hashtab { /* hash table for vocabulary */
|
|
int val; /* word type &index (ktab) */
|
|
char *atab; /* pointer to actual string */
|
|
} voc[HTSIZE];
|
|
#define SEED 1815622 /* "Encryption" seed */
|
|
|
|
struct text
|
|
#ifdef OLDSTUFF
|
|
{
|
|
int seekadr; /* DATFILE must be < 2**16 */
|
|
#endif /* OLDSTUFF */
|
|
{
|
|
char *seekadr;/* Msg start in virtual disk */
|
|
int txtlen; /* length of msg starting here */
|
|
};
|
|
|
|
#define RTXSIZ 205
|
|
struct text rtext[RTXSIZ]; /* random text messages */
|
|
|
|
#define MAGSIZ 35
|
|
struct text mtext[MAGSIZ]; /* magic messages */
|
|
|
|
int clsses;
|
|
#define CLSMAX 12
|
|
struct text ctext[CLSMAX]; /* classes of adventurer */
|
|
int cval[CLSMAX];
|
|
|
|
struct text ptext[101]; /* object descriptions */
|
|
|
|
#define LOCSIZ 141 /* number of locations */
|
|
struct text ltext[LOCSIZ]; /* long loc description */
|
|
struct text stext[LOCSIZ]; /* short loc descriptions */
|
|
|
|
struct travlist { /* direcs & conditions of travel */
|
|
struct travlist *next; /* ptr to next list entry */
|
|
int conditions; /* m in writeup (newloc / 1000) */
|
|
int tloc; /* n in writeup (newloc % 1000) */
|
|
int tverb; /* the verb that takes you there */
|
|
} *travel[LOCSIZ], *tkk; /* travel is closer to keys(...) */
|
|
|
|
int atloc[LOCSIZ];
|
|
|
|
int plac[101]; /* initial object placement */
|
|
int fixd[101], fixed[101]; /* location fixed? */
|
|
|
|
int actspk[35]; /* rtext msg for verb <n> */
|
|
|
|
int cond[LOCSIZ]; /* various condition bits */
|
|
|
|
extern int setbit[16]; /* bit defn masks 1,2,4,... */
|
|
|
|
int hntmax;
|
|
int hints[20][5]; /* info on hints */
|
|
int hinted[20], hintlc[20];
|
|
|
|
int place[101], prop[101], links[201];
|
|
int abb[LOCSIZ];
|
|
|
|
int maxtrs, tally, tally2; /* treasure values */
|
|
|
|
#define FALSE 0
|
|
#define TRUE 1
|
|
|
|
int keys, lamp, grate, cage, rod, rod2, steps, /* mnemonics */
|
|
bird, door, pillow, snake, fissur, tablet, clam, oyster,
|
|
magzin, dwarf, knife, food, bottle, water, oil, plant, plant2,
|
|
axe, mirror, dragon, chasm, troll, troll2, bear, messag,
|
|
vend, batter, nugget, coins, chest, eggs, tridnt, vase,
|
|
emrald, pyram, pearl, rug, chain, spices, back, look, cave,
|
|
null, entrnc, dprssn, enter, stream, pour, say, lock, throw,
|
|
find, invent;
|
|
|
|
int chloc, chloc2, dseen[7], dloc[7], /* dwarf stuff */
|
|
odloc[7], dflag, daltlc;
|
|
|
|
int tk[21], stick, dtotal, attack;
|
|
int turns, lmwarn, iwest, knfloc, detail, /* various flags and
|
|
* counters */
|
|
abbnum, maxdie, numdie, holdng, dkill, foobar, bonus, clock1,
|
|
clock2, saved, closng, panic, closed, scorng;
|
|
|
|
int demo, newloc, limit;
|
|
|
|
#define DECR(a,b,c,d,e) decr(a+'+',b+'-',c+'#',d+'&',e+'%')
|