/* 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));