406 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			406 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /*	header ADVENT.H						*
 | |
|  *	WARNING: HEADER file for all adventure modules		*/
 | |
| 
 | |
| #ifndef EXIT_FAILURE
 | |
| #define EXIT_FAILURE	1
 | |
| #define EXIT_SUCCESS	(!(EXIT_FAILURE))
 | |
| #endif
 | |
| 
 | |
| #define INPUTBUFLEN	80	/* Max input line length	 */
 | |
| 
 | |
| typedef int boolean;
 | |
| #define FALSE	(0)
 | |
| #define TRUE	(!FALSE)
 | |
| 
 | |
| #define	MAXOBJ	123		/* max # of objects in cave	 */
 | |
| #define	MAXLOC	248		/* max # of cave locations	 */
 | |
| #define	WORDSIZE	20	/* max # of chars in commands	 */
 | |
| #define	MAXMSG	408		/* max # of long location descr	 */
 | |
| #define HNTMAX	 18		/* max # of hints		 */
 | |
| #define HNTMIN	  7		/* hints starting count		 */
 | |
| 
 | |
| #define MAXWORDS 25
 | |
| #define MAXITEMS 45
 | |
| 
 | |
| #define CLASS(word) ((word)<0 ? -((-(word)) / 1000) : (word) / 1000)
 | |
| #define VAL(word) ((word)<0 ? -((-(word)) % 1000) : (word) % 1000)
 | |
| #define	MAXTRAV	(23+1)		/* max # of travel directions from loc	 */
 | |
|  /* +1 for terminator travel[x].tdest=-1	 */
 | |
| #define	DWARFMAX	6	/* max # of nasty dwarves	 */
 | |
| #define	MAXDIE	3		/* max # of deaths before close	 */
 | |
| #define	MAXTRS	79		/* max # of			 */
 | |
| 
 | |
| #define Y2	33
 | |
| /*
 | |
|   Object definitions
 | |
| */
 | |
| #define ANVIL	91
 | |
| #define AXE	28
 | |
| #define BATTERIES 39
 | |
| #define BEAR	35
 | |
| #define BEES	87
 | |
| #define BILLBD	116
 | |
| #define BIRD	101
 | |
| #define BOAT	48
 | |
| #define BOOK	110
 | |
| #define BOOK2	BOOK + 1
 | |
| #define BOOTH	93
 | |
| #define BOTTLE	20
 | |
| #define BRUSH	114
 | |
| #define	CAGE	4
 | |
| #define CAKES	107
 | |
| #define CARVNG	115
 | |
| #define CASK	71
 | |
| #define CHAIN	64
 | |
| #define CHASM	21
 | |
| #define CHASM2	CHASM + 1
 | |
| #define CHEST	55
 | |
| #define	CLAM	14
 | |
| #define CLOAK	47
 | |
| #define COINS	54
 | |
| #define CROWN	66
 | |
| #define DOG	98
 | |
| #define	DOOR	41		/* giant door */
 | |
| #define DRAGON	31
 | |
| #define DWARF	17
 | |
| #define EGGS	56
 | |
| #define EMERALD 59
 | |
| #define FISSURE 12
 | |
| #define FLOWER	46
 | |
| #define FLY	69
 | |
| #define FOOD	19
 | |
| #define GNOME	105
 | |
| #define GRAIL	70
 | |
| #define GRATE	3
 | |
| #define HIVE	97
 | |
| #define HONEY	96
 | |
| #define HORN	52
 | |
| #define JEWELS	53
 | |
| #define KEYS	102
 | |
| #define KNIFE	18
 | |
| #define LAMP	2
 | |
| #define LYRE	68
 | |
| #define MAGAZINE 16
 | |
| #define MESSAGE 36
 | |
| #define MIRROR	23
 | |
| #define MUSHRM	106
 | |
| #define NUGGET	50
 | |
| #define OIL	83
 | |
| #define OIL2	OIL + 1
 | |
| #define OYSTER	15
 | |
| #define PLAGUE	125
 | |
| #define PEARL	61
 | |
| #define PHONE	94
 | |
| #define PILLOW	10
 | |
| #define PLANT	24
 | |
| #define PLANT2	PLANT + 1
 | |
| #define POLE	9
 | |
| #define POSTER	113
 | |
| #define PYRAMID 60
 | |
| #define RADIUM	119
 | |
| #define RING	72
 | |
| #define ROCKS	92
 | |
| #define ROD	5
 | |
| #define ROD2	ROD + 1
 | |
| #define RUG	62
 | |
| #define	SAFE	112
 | |
| #define SAPPHIRE 69
 | |
| #define SHIELD	118
 | |
| #define SHOES	67
 | |
| #define SKEY	90
 | |
| #define SLUGS	95
 | |
| #define SNAKE	11
 | |
| #define SPHERE	120
 | |
| #define SPICES	63
 | |
| #define SPIDER	121
 | |
| #define STEPS	7
 | |
| #define STICKS	49
 | |
| #define SWORD	65
 | |
| #define TABLET	13
 | |
| #define TDOOR	42		/* tiny door */
 | |
| #define TDOOR2	TDOOR + 1	/* wrought-iron door */
 | |
| #define PDOOR	TDOOR2 + 1	/* door to phone booth */
 | |
| #define TRIDENT	57
 | |
| #define TROLL	33
 | |
| #define TROLL2	TROLL + 1
 | |
| #define VASE	58
 | |
| #define VEND	38
 | |
| #define WALL	88
 | |
| #define WALL2	WALL + 1
 | |
| #define WATER	81		/* in bottle */
 | |
| #define WATER2	WATER + 1	/* in cask */
 | |
| #define	WINE	85		/* in bottle */
 | |
| #define WINE2	WINE + 1	/* in cask */
 | |
| #define WUMPUS	99
 | |
| 
 | |
| /*
 | |
|   Verb definitions
 | |
| */
 | |
| #define	BACK	8
 | |
| #define	CAVE	67
 | |
| #define	DEPRESSION	63
 | |
| #define	ENTRANCE	64
 | |
| #define EXIT	11
 | |
| #define	NULLX	21
 | |
| 
 | |
| /*
 | |
|   Action verb definitions
 | |
| */
 | |
| #define TAKE	1
 | |
| #define DROP	2
 | |
| #define SAY	3
 | |
| #define OPEN	4
 | |
| #define NOTHING 5
 | |
| #define CLOSE   6
 | |
| #define ON	7
 | |
| #define OFF	8
 | |
| #define WAVE	9
 | |
| #define CALM	10
 | |
| #define WALK	11
 | |
| #define KILL	12
 | |
| #define POUR	13
 | |
| #define EAT	14
 | |
| #define DRINK	15
 | |
| #define RUB	16
 | |
| #define	THROW	17
 | |
| #define QUIT	18
 | |
| #define FIND	19
 | |
| #define INVENTORY 20
 | |
| #define FEED	21
 | |
| #define FILL	22
 | |
| #define BLAST	23
 | |
| #define SCORE	24
 | |
| #define FOO	25
 | |
| #define BRIEF	26
 | |
| #define READ	27
 | |
| #define BREAK	28
 | |
| #define WAKE	29
 | |
| #define SUSPEND 30
 | |
| #define RESTORE	31
 | |
| #define YANK	32
 | |
| #define WEAR	33
 | |
| #define HIT	34
 | |
| #define ANSWER 35
 | |
| #define BLOW	36
 | |
| #define LEAVE	37
 | |
| #define YELL	38
 | |
| #define DIAL	39
 | |
| #define PLAY	40
 | |
| #define PICK	41
 | |
| #define PUT	42
 | |
| #define TURN	43
 | |
| #define GET	44
 | |
| #define INSRT	45
 | |
| #define REMOVE  46
 | |
| #define BURN	47
 | |
| #define GRIPE	48
 | |
| #define LOCK	49
 | |
| #define UNLOCK	50
 | |
| #define HEALTH	51
 | |
| #define LOOK	52
 | |
| #define COMBO	53
 | |
| #define SWEEP	54
 | |
| #define TERSE	55
 | |
| #define	WIZ	56
 | |
| #define MAP	57
 | |
| #define GATE	58
 | |
| #define PIRLOC	59
 | |
| 
 | |
| #define GO	11
 | |
| #define SHUT    6
 | |
| #define LOG     33
 | |
| 
 | |
| #define MOTION	0			/* CLASSD */
 | |
| #define NOUN	1			/* CLASSN */
 | |
| #define ACTION	2			/* CLASSA */
 | |
| #define MISC	3			/* CLASSM */
 | |
| #define PREPOSITION 4			/* CLASSP */
 | |
| #define ADJACTIVE   5			/* CLASSJ */
 | |
| #define CONJUNCTION 6			/* CLASSC */
 | |
| 
 | |
| /*
 | |
|    and a few preposition.  prefix PREP to distinguish them from
 | |
|    verbs or nouns
 | |
|  */
 | |
| #define PREPAT	9
 | |
| #define PREPDN	8
 | |
| #define PREPIN	1
 | |
| #define PREPFR  5
 | |
| #define PREPOF  6
 | |
| #define PREPOFF 6
 | |
| #define PREPON	2
 | |
| 
 | |
| /*
 | |
|   BIT mapping of "cond" array which indicates location status
 | |
| */
 | |
| #define	LIGHT	1
 | |
| #define	WATOIL	2
 | |
| #define	LIQUID	4
 | |
| #define	NOPIRAT	16
 | |
| 
 | |
| /* Object condition bit functions */
 | |
| #define OPENBT 2
 | |
| #define LOCKBT 4
 | |
| #define BURNBT 6
 | |
| #define DEADBT 10
 | |
| #define WEARBT 12
 | |
| /*
 | |
|   Structure definitions
 | |
| */
 | |
| struct wac {
 | |
|   char *aword;
 | |
|   int acode;
 | |
| };
 | |
| 
 | |
| struct trav {
 | |
|   int tdest;
 | |
|   int tverb;
 | |
|   int tcond;
 | |
| };
 | |
| 
 | |
| /* Function prototypes.
 | |
|    "#if (__STDC__)" should have been be enough,
 | |
|    but some compilers are stupid, so allow Makefile to say -DHAS_STDC=whatever.
 | |
| */
 | |
| #if defined(HAS_STDC) ? (HAS_STDC) : (__STDC__)
 | |
| #undef	HAS_STDC
 | |
| #define HAS_STDC 1
 | |
| #define	_PROTOTYPE(function, params)	function params
 | |
| #define _CONST				const
 | |
| #else
 | |
| #define	_PROTOTYPE(function, params)	function ()
 | |
| #define _CONST
 | |
| #endif
 | |
| 
 | |
| /* Advent.c */
 | |
| 
 | |
| _PROTOTYPE(void saveadv, (char *username));
 | |
| _PROTOTYPE(void restore, (char *username));
 | |
| 
 | |
| /* Initialize.c */
 | |
| 
 | |
| _PROTOTYPE(void initialize, (void));
 | |
| 
 | |
| /* Database.c */
 | |
| 
 | |
| _PROTOTYPE(int yes, (int msg1, int msg2, int msg3));
 | |
| _PROTOTYPE(void rspeak, (int msg));
 | |
| _PROTOTYPE(void pspeak, (int item, int state));
 | |
| _PROTOTYPE(void desclg, (int loc));
 | |
| _PROTOTYPE(void descsh, (int loc));
 | |
| 
 | |
| /* English.c */
 | |
| 
 | |
| _PROTOTYPE(int english, (void));
 | |
| _PROTOTYPE(int analyze, (char *word, int *type, int *value));
 | |
| 
 | |
| /* Itverb.c */
 | |
| 
 | |
| _PROTOTYPE(void itverb, (void));
 | |
| _PROTOTYPE(void ivblast, (void));
 | |
| _PROTOTYPE(void ivlook, (void));
 | |
| 
 | |
| /* Turn.c */
 | |
| 
 | |
| _PROTOTYPE(void turn, (void));
 | |
| _PROTOTYPE(void describe, (void));
 | |
| _PROTOTYPE(void descitem, (void));
 | |
| _PROTOTYPE(void dwarfend, (void));
 | |
| _PROTOTYPE(void normend, (void));
 | |
| _PROTOTYPE(void score, (int));
 | |
| _PROTOTYPE(void death, (void));
 | |
| _PROTOTYPE(char *probj, (void));
 | |
| _PROTOTYPE(void trobj, (void));
 | |
| _PROTOTYPE(void dwarves, (void));
 | |
| _PROTOTYPE(void dopirate, (void));
 | |
| _PROTOTYPE(int stimer, (void));
 | |
| 
 | |
| /* Verb.c */
 | |
| 
 | |
| _PROTOTYPE(void trverb, (void));
 | |
| _PROTOTYPE(void vtake, (void));
 | |
| _PROTOTYPE(void vdrop, (void));
 | |
| _PROTOTYPE(void vopen, (void));
 | |
| _PROTOTYPE(void vsay, (void));
 | |
| _PROTOTYPE(void von, (void));
 | |
| _PROTOTYPE(void voff, (void));
 | |
| _PROTOTYPE(void vwave, (void));
 | |
| _PROTOTYPE(void vkill, (void));
 | |
| _PROTOTYPE(void vpour, (void));
 | |
| _PROTOTYPE(void veat, (void));
 | |
| _PROTOTYPE(void vdrink, (void));
 | |
| _PROTOTYPE(void vthrow, (void));
 | |
| _PROTOTYPE(void vfind, (void));
 | |
| _PROTOTYPE(void vfill, (void));
 | |
| _PROTOTYPE(void vfeed, (void));
 | |
| _PROTOTYPE(void vread, (void));
 | |
| _PROTOTYPE(void vbreak, (void));
 | |
| _PROTOTYPE(void vwake, (void));
 | |
| _PROTOTYPE(void actspk, (int verb));
 | |
| _PROTOTYPE(void vyank, (void));
 | |
| _PROTOTYPE(void vwear, (void));
 | |
| _PROTOTYPE(void vlock, (void));
 | |
| _PROTOTYPE(void vunlock, (void));
 | |
| _PROTOTYPE(void vclose, (void));
 | |
| 
 | |
| /* Utility.c */
 | |
| 
 | |
| _PROTOTYPE(boolean ajar, (int));
 | |
| _PROTOTYPE(boolean at, (int item));
 | |
| _PROTOTYPE(boolean athand, (int));
 | |
| _PROTOTYPE(void bitoff, (int, int));
 | |
| _PROTOTYPE(void biton, (int, int));
 | |
| _PROTOTYPE(boolean bitset, (long, int));
 | |
| _PROTOTYPE(boolean blind, (void));
 | |
| _PROTOTYPE(int burden, (int));
 | |
| _PROTOTYPE(void carry, (int obj, int where));
 | |
| _PROTOTYPE(int confuz, (void));
 | |
| _PROTOTYPE(boolean dark, (void));
 | |
| _PROTOTYPE(boolean dcheck, (void));
 | |
| _PROTOTYPE(boolean dead, (int));
 | |
| _PROTOTYPE(void drop, (int obj, int where));
 | |
| _PROTOTYPE(void destroy, (int obj));
 | |
| _PROTOTYPE(boolean edible, (int));
 | |
| _PROTOTYPE(boolean enclosed, (int));
 | |
| _PROTOTYPE(void extract, (int));
 | |
| _PROTOTYPE(boolean forced, (int atloc));
 | |
| _PROTOTYPE(boolean here, (int item));
 | |
| _PROTOTYPE(boolean hinged, (int));
 | |
| _PROTOTYPE(boolean holding, (int));
 | |
| _PROTOTYPE(void insert, (int, int));
 | |
| _PROTOTYPE(boolean inside, (int));
 | |
| _PROTOTYPE(void juggle, (int loc));
 | |
| _PROTOTYPE(int liq, (int));
 | |
| _PROTOTYPE(int liqloc, (int loc));
 | |
| _PROTOTYPE(int liq2, (int pbottle));
 | |
| _PROTOTYPE(boolean living, (int));
 | |
| _PROTOTYPE(boolean locked, (int));
 | |
| _PROTOTYPE(boolean locks, (int));
 | |
| _PROTOTYPE(void lookin, (int));
 | |
| _PROTOTYPE(void move, (int obj, int where));
 | |
| _PROTOTYPE(int noway, (void));
 | |
| _PROTOTYPE(boolean opaque, (int));
 | |
| _PROTOTYPE(boolean outside, (int));
 | |
| _PROTOTYPE(boolean pct, (int x));
 | |
| _PROTOTYPE(boolean plural, (int));
 | |
| _PROTOTYPE(boolean portal, (int));
 | |
| _PROTOTYPE(boolean printed, (int));
 | |
| _PROTOTYPE(int put, (int obj, int where, int pval));
 | |
| _PROTOTYPE(int ranz, (int));
 | |
| _PROTOTYPE(boolean small, (int));
 | |
| _PROTOTYPE(boolean toting, (int item));
 | |
| _PROTOTYPE(boolean treasr, (int));
 | |
| _PROTOTYPE(boolean vessel, (int));
 | |
| _PROTOTYPE(boolean wearng, (int));
 | |
| _PROTOTYPE(boolean worn, (int));
 | |
| _PROTOTYPE(void bug, (unsigned int n));
 | |
| _PROTOTYPE(char *ask, (char *prompt, char *buf, int buflen));
 | |
| _PROTOTYPE(void panic, (char *msg, boolean save));
 | |
| 
 | |
| /* travel.c */
 | |
| _PROTOTYPE(void domove, (void));
 | |
| _PROTOTYPE(void gettrav, (int loc, struct trav *travel));
 | |
| 
 | |
| /* vocab.c */
 | |
| _PROTOTYPE(int vocab, (char *word, int val));
 | 
