|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1983 Regents of the University of California, ! 3: * All rights reserved. Redistribution permitted subject to ! 4: * the terms of the Berkeley Software License Agreement. ! 5: */ ! 6: ! 7: /* @(#)externs.h 1.3 4/24/85 */ ! 8: ! 9: #include <sys/signal.h> ! 10: #include <stdio.h> ! 11: ! 12: #define PATH(x) "/usr/games/lib/x" ! 13: #define logfile PATH(battlestar.log) ! 14: ! 15: #define BITS (8 * sizeof (int)) ! 16: ! 17: #define OUTSIDE (position > 68 && position < 246 && position != 218) ! 18: #define rnd(x) (rand() % (x)) ! 19: #define max(a,b) ((a) < (b) ? (b) : (a)) ! 20: #define testbit(array, index) (array[index/BITS] & (1 << (index % BITS))) ! 21: #define setbit(array, index) (array[index/BITS] |= (1 << (index % BITS))) ! 22: #define clearbit(array, index) (array[index/BITS] &= ~(1 << (index % BITS))) ! 23: ! 24: /* well known rooms */ ! 25: #define FINAL 275 ! 26: #define GARDEN 197 ! 27: #define POOLS 126 ! 28: #define DOCK 93 ! 29: ! 30: /* word types */ ! 31: #define VERB 0 ! 32: #define OBJECT 1 ! 33: #define NOUNS 2 ! 34: #define PREPS 3 ! 35: #define ADJS 4 ! 36: #define CONJ 5 ! 37: ! 38: /* words numbers */ ! 39: #define KNIFE 0 ! 40: #define SWORD 1 ! 41: #define LAND 2 ! 42: #define WOODSMAN 3 ! 43: #define TWO_HANDED 4 ! 44: #define CLEAVER 5 ! 45: #define BROAD 6 ! 46: #define MAIL 7 ! 47: #define HELM 8 ! 48: #define SHIELD 9 ! 49: #define MAID 10 ! 50: #define BODY 10 ! 51: #define VIPER 11 ! 52: #define LAMPON 12 ! 53: #define SHOES 13 ! 54: #define CYLON 14 ! 55: #define PAJAMAS 15 ! 56: #define ROBE 16 ! 57: #define AMULET 17 ! 58: #define MEDALION 18 ! 59: #define TALISMAN 19 ! 60: #define DEADWOOD 20 ! 61: #define MALLET 21 ! 62: #define LASER 22 ! 63: #define BATHGOD 23 ! 64: #define NORMGOD 24 ! 65: #define GRENADE 25 ! 66: #define CHAIN 26 ! 67: #define ROPE 27 ! 68: #define LEVIS 28 ! 69: #define MACE 29 ! 70: #define SHOVEL 30 ! 71: #define HALBERD 31 ! 72: #define COMPASS 32 ! 73: #define CRASH 33 ! 74: #define ELF 34 ! 75: #define FOOT 35 ! 76: #define COINS 36 ! 77: #define MATCHES 37 ! 78: #define MAN 38 ! 79: #define PAPAYAS 39 ! 80: #define PINEAPPLE 40 ! 81: #define KIWI 41 ! 82: #define COCONUTS 42 ! 83: #define MANGO 43 ! 84: #define RING 44 ! 85: #define POTION 45 ! 86: #define BRACELET 46 ! 87: #define GIRL 47 ! 88: #define GIRLTALK 48 ! 89: #define DARK 49 ! 90: #define TIMER 50 ! 91: #define CHAR 53 ! 92: #define BOMB 54 ! 93: #define DEADGOD 55 ! 94: #define DEADTIME 56 ! 95: #define DEADNATIVE 57 ! 96: #define NATIVE 58 ! 97: #define HORSE 59 ! 98: #define CAR 60 ! 99: #define POT 61 ! 100: #define BAR 62 ! 101: #define BLOCK 63 ! 102: #define NUMOFOBJECTS 64 ! 103: /* non-objects below */ ! 104: #define UP 1000 ! 105: #define DOWN 1001 ! 106: #define AHEAD 1002 ! 107: #define BACK 1003 ! 108: #define RIGHT 1004 ! 109: #define LEFT 1005 ! 110: #define TAKE 1006 ! 111: #define USE 1007 ! 112: #define LOOK 1008 ! 113: #define QUIT 1009 ! 114: #define NORTH 1010 ! 115: #define SOUTH 1011 ! 116: #define EAST 1012 ! 117: #define WEST 1013 ! 118: #define SU 1014 ! 119: #define DROP 1015 ! 120: #define TAKEOFF 1016 ! 121: #define DRAW 1017 ! 122: #define PUTON 1018 ! 123: #define WEARIT 1019 ! 124: #define PUT 1020 ! 125: #define INVEN 1021 ! 126: #define EVERYTHING 1022 ! 127: #define AND 1023 ! 128: #define KILL 1024 ! 129: #define RAVAGE 1025 ! 130: #define UNDRESS 1026 ! 131: #define THROW 1027 ! 132: #define LAUNCH 1028 ! 133: #define LANDIT 1029 ! 134: #define LIGHT 1030 ! 135: #define FOLLOW 1031 ! 136: #define KISS 1032 ! 137: #define LOVE 1033 ! 138: #define GIVE 1034 ! 139: #define SMITE 1035 ! 140: #define SHOOT 1036 ! 141: #define ON 1037 ! 142: #define OFF 1038 ! 143: #define TIME 1039 ! 144: #define SLEEP 1040 ! 145: #define DIG 1041 ! 146: #define EAT 1042 ! 147: #define SWIM 1043 ! 148: #define DRINK 1044 ! 149: #define DOOR 1045 ! 150: #define SAVE 1046 ! 151: #define RIDE 1047 ! 152: #define DRIVE 1048 ! 153: #define SCORE 1049 ! 154: #define BURY 1050 ! 155: #define JUMP 1051 ! 156: #define KICK 1052 ! 157: ! 158: /* injuries */ ! 159: #define ARM 6 /* broken arm */ ! 160: #define RIBS 7 /* broken ribs */ ! 161: #define SPINE 9 /* broken back */ ! 162: #define SKULL 11 /* fractured skull */ ! 163: #define INCISE 10 /* deep incisions */ ! 164: #define NECK 12 /* broken NECK */ ! 165: #define NUMOFINJURIES 13 ! 166: ! 167: /* notes */ ! 168: #define CANTLAUNCH 0 ! 169: #define LAUNCHED 1 ! 170: #define CANTSEE 2 ! 171: #define CANTMOVE 3 ! 172: #define JINXED 4 ! 173: #define DUG 5 ! 174: #define NUMOFNOTES 6 ! 175: ! 176: /* fundamental constants */ ! 177: #define NUMOFROOMS 275 ! 178: #define NUMOFWORDS ((NUMOFOBJECTS + BITS - 1) / BITS) ! 179: #define LINELENGTH 81 ! 180: ! 181: #define TODAY 0 ! 182: #define TONIGHT 1 ! 183: #define CYCLE 100 ! 184: ! 185: /* initial variable values */ ! 186: #define TANKFULL 250 ! 187: #define TORPEDOES 10 ! 188: #define MAXWEIGHT 60 ! 189: #define MAXCUMBER 10 ! 190: ! 191: struct room { ! 192: char *name; ! 193: int link[8]; ! 194: #define north link[0] ! 195: #define south link[1] ! 196: #define east link[2] ! 197: #define west link[3] ! 198: #define up link[4] ! 199: #define access link[5] ! 200: #define down link[6] ! 201: #define flyhere link[7] ! 202: char *desc; ! 203: unsigned int objects[NUMOFWORDS]; ! 204: }; ! 205: struct room dayfile[]; ! 206: struct room nightfile[]; ! 207: struct room *location; ! 208: ! 209: /* object characteristics */ ! 210: char *objdes[NUMOFOBJECTS]; ! 211: char *objsht[NUMOFOBJECTS]; ! 212: char *ouch[NUMOFINJURIES]; ! 213: int objwt[NUMOFOBJECTS]; ! 214: int objcumber[NUMOFOBJECTS]; ! 215: ! 216: /* current input line */ ! 217: #define NWORD 20 /* words per line */ ! 218: char words[NWORD][15]; ! 219: int wordvalue[NWORD]; ! 220: int wordtype[NWORD]; ! 221: int wordcount, wordnumber; ! 222: ! 223: char *truedirec(), *rate(); ! 224: char *getcom(), *getword(); ! 225: ! 226: /* state of the game */ ! 227: int time; ! 228: int position; ! 229: int direction; ! 230: int left, right, ahead, back; ! 231: int clock, fuel, torps; ! 232: int carrying, encumber; ! 233: int rythmn; ! 234: int followfight; ! 235: int ate; ! 236: int snooze; ! 237: int meetgirl; ! 238: int followgod; ! 239: int godready; ! 240: int win; ! 241: int wintime; ! 242: int wiz; ! 243: int tempwiz; ! 244: int matchlight, matchcount; ! 245: int loved; ! 246: int pleasure, power, ego; ! 247: int WEIGHT; ! 248: int CUMBER; ! 249: int notes[NUMOFNOTES]; ! 250: unsigned int inven[NUMOFWORDS]; ! 251: unsigned int wear[NUMOFWORDS]; ! 252: char beenthere[NUMOFROOMS+1]; ! 253: char injuries[NUMOFINJURIES]; ! 254: ! 255: char uname[9]; ! 256: ! 257: struct wlist { ! 258: char *string; ! 259: int value, article; ! 260: struct wlist *next; ! 261: }; ! 262: #define HASHSIZE 256 ! 263: #define HASHMUL 81 ! 264: #define HASHMASK (HASHSIZE - 1) ! 265: struct wlist *hashtab[HASHSIZE]; ! 266: struct wlist wlist[]; ! 267: ! 268: struct objs { ! 269: short room; ! 270: short obj; ! 271: }; ! 272: struct objs dayobjs[]; ! 273: struct objs nightobjs[];
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.