|
|
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: #ifndef lint ! 8: static char sccsid[] = "@(#)com3.c 1.2 4/24/85"; ! 9: #endif ! 10: ! 11: #include "externs.h" ! 12: ! 13: dig() ! 14: { ! 15: if (testbit(inven,SHOVEL)){ ! 16: puts("OK"); ! 17: time++; ! 18: switch(position){ ! 19: case 144: /* copse near beach */ ! 20: if (!notes[DUG]){ ! 21: setbit(location[position].objects,DEADWOOD); ! 22: setbit(location[position].objects,COMPASS); ! 23: setbit(location[position].objects,KNIFE); ! 24: setbit(location[position].objects,MACE); ! 25: notes[DUG] = 1; ! 26: } ! 27: break; ! 28: ! 29: default: ! 30: puts("Nothing happens."); ! 31: } ! 32: } ! 33: else ! 34: puts("You don't have a shovel."); ! 35: } ! 36: ! 37: jump() ! 38: { ! 39: register int n; ! 40: ! 41: switch(position){ ! 42: default: ! 43: puts("Nothing happens."); ! 44: return(-1); ! 45: ! 46: case 242: ! 47: position = 133; ! 48: break; ! 49: case 214: ! 50: case 215: ! 51: case 162: ! 52: case 159: ! 53: position = 145; ! 54: break; ! 55: case 232: ! 56: position = 275; ! 57: break; ! 58: case 3: ! 59: position = 1; ! 60: break; ! 61: case 172: ! 62: position = 201; ! 63: } ! 64: puts("Ahhhhhhh..."); ! 65: injuries[12] = injuries[8] = injuries[7] = injuries[6] = 1; ! 66: for (n=0; n < NUMOFOBJECTS; n++) ! 67: if (testbit(inven,n)){ ! 68: clearbit(inven,n); ! 69: setbit(location[position].objects,n); ! 70: } ! 71: carrying = 0; ! 72: encumber = 0; ! 73: return(0); ! 74: } ! 75: ! 76: bury() ! 77: { ! 78: int value; ! 79: ! 80: if (testbit(inven,SHOVEL)){ ! 81: while(wordtype[++wordnumber] != OBJECT && wordtype[wordnumber] != NOUNS && wordnumber < wordcount); ! 82: value = wordvalue[wordnumber]; ! 83: if (wordtype[wordnumber] == NOUNS && (testbit(location[position].objects,value) || value == BODY)) ! 84: switch(value){ ! 85: case BODY: ! 86: wordtype[wordnumber] = OBJECT; ! 87: if (testbit(inven,MAID) || testbit(location[position].objects,MAID)) ! 88: value = MAID; ! 89: if (testbit(inven,DEADWOOD) || testbit(location[position].objects,DEADWOOD)) ! 90: value = DEADWOOD; ! 91: if (testbit(inven,DEADGOD) || testbit(location[position].objects,DEADGOD)) ! 92: value = DEADGOD; ! 93: if (testbit(inven,DEADTIME) || testbit(location[position].objects,DEADTIME)) ! 94: value = DEADTIME; ! 95: if (testbit(inven,DEADNATIVE) || testbit(location[position].objects,DEADNATIVE)) ! 96: value = DEADNATIVE; ! 97: break; ! 98: ! 99: case NATIVE: ! 100: case NORMGOD: ! 101: puts("She screams as you wrestle her into the hole."); ! 102: case TIMER: ! 103: power += 7; ! 104: ego -= 10; ! 105: case AMULET: ! 106: case MEDALION: ! 107: case TALISMAN: ! 108: wordtype[wordnumber] = OBJECT; ! 109: break; ! 110: ! 111: default: ! 112: puts("Wha..?"); ! 113: } ! 114: if (wordtype[wordnumber] == OBJECT && position > 88 && (testbit(inven,value) || testbit(location[position].objects,value))){ ! 115: puts("Buried."); ! 116: if (testbit(inven,value)){ ! 117: clearbit(inven,value); ! 118: carrying -= objwt[value]; ! 119: encumber -= objcumber[value]; ! 120: } ! 121: clearbit(location[position].objects,value); ! 122: switch(value){ ! 123: case MAID: ! 124: case DEADWOOD: ! 125: case DEADNATIVE: ! 126: case DEADTIME: ! 127: case DEADGOD: ! 128: ego += 2; ! 129: printf("The %s should rest easier now.\n",objsht[value]); ! 130: } ! 131: } ! 132: else ! 133: puts("It doesn't seem to work."); ! 134: } ! 135: else ! 136: puts("You aren't holding a shovel."); ! 137: } ! 138: ! 139: drink() ! 140: { ! 141: register int n; ! 142: ! 143: if (testbit(inven,POTION)){ ! 144: puts("The cool liquid runs down your throat but turns to fire and you choke."); ! 145: puts("The heat reaches your limbs and tingles your spirit. You feel like falling"); ! 146: puts("asleep."); ! 147: clearbit(inven, POTION); ! 148: WEIGHT = MAXWEIGHT; ! 149: CUMBER = MAXCUMBER; ! 150: for (n=0; n < NUMOFINJURIES; n++) ! 151: injuries[n] = 0; ! 152: time++; ! 153: zzz(); ! 154: } ! 155: else ! 156: puts("I'm not thirsty."); ! 157: } ! 158: ! 159: shoot() ! 160: { ! 161: int firstnumber, value; ! 162: register int n; ! 163: ! 164: if (!testbit(inven,LASER)) ! 165: puts("You aren't holding a blaster."); ! 166: else { ! 167: firstnumber = wordnumber; ! 168: while(wordtype[++wordnumber] == ADJS); ! 169: while(wordnumber<=wordcount && wordtype[wordnumber] == OBJECT){ ! 170: value = wordvalue[wordnumber]; ! 171: printf("%s:\n", objsht[value]); ! 172: for (n=0; objsht[value][n]; n++); ! 173: if (testbit(location[position].objects,value)){ ! 174: clearbit(location[position].objects,value); ! 175: time++; ! 176: printf("The %s explode%s\n",objsht[value],(objsht[value][n-1]=='s' ? (objsht[value][n-2]=='s' ? "s." : ".") : "s.")); ! 177: if (value == BOMB) ! 178: die(); ! 179: } ! 180: else ! 181: printf("I dont see any %s around here.\n", objsht[value]); ! 182: if (wordnumber < wordcount - 1 && wordvalue[++wordnumber] == AND) ! 183: wordnumber++; ! 184: else ! 185: return(firstnumber); ! 186: } ! 187: /* special cases with their own return()'s */ ! 188: ! 189: if (wordnumber <= wordcount && wordtype[wordnumber] == NOUNS){ ! 190: time++; ! 191: switch(wordvalue[wordnumber]){ ! 192: ! 193: case DOOR: ! 194: switch(position){ ! 195: case 189: ! 196: case 231: ! 197: puts("The door is unhinged."); ! 198: location[189].north = 231; ! 199: location[231].south = 189; ! 200: whichway(location[position]); ! 201: break; ! 202: case 30: ! 203: puts("The wooden door splinters."); ! 204: location[30].west = 25; ! 205: whichway(location[position]); ! 206: break; ! 207: case 31: ! 208: puts("The laser blast has no effect on the door."); ! 209: break; ! 210: case 20: ! 211: puts("The blast hits the door and it explodes into flame. The magnesium burns"); ! 212: puts("so rapidly that we have no chance to escape."); ! 213: die(); ! 214: default: ! 215: puts("Nothing happens."); ! 216: } ! 217: break; ! 218: ! 219: case NORMGOD: ! 220: if (testbit(location[position].objects,BATHGOD)){ ! 221: puts("The goddess is hit in the chest and splashes back against the rocks."); ! 222: puts("Dark blood oozes from the charred blast hole. Her naked body floats in the"); ! 223: puts("pools and then off downstream."); ! 224: clearbit(location[position].objects,BATHGOD); ! 225: setbit(location[180].objects,DEADGOD); ! 226: power += 5; ! 227: ego -= 10; ! 228: notes[JINXED]++; ! 229: } else if (testbit(location[position].objects,NORMGOD)){ ! 230: puts("The blast catches the goddess in the stomach, knocking her to the ground."); ! 231: puts("She writhes in the dirt as the agony of death taunts her."); ! 232: puts("She has stopped moving."); ! 233: clearbit(location[position].objects,NORMGOD); ! 234: setbit(location[position].objects,DEADGOD); ! 235: power += 5; ! 236: ego -= 10; ! 237: notes[JINXED]++; ! 238: if (wintime) ! 239: live(); ! 240: break; ! 241: } else ! 242: puts("I don't see any goddess around here."); ! 243: break; ! 244: ! 245: case TIMER: ! 246: if (testbit(location[position].objects,TIMER)){ ! 247: puts("The old man slumps over the bar."); ! 248: power++; ! 249: ego -= 2; ! 250: notes[JINXED]++; ! 251: clearbit(location[position].objects,TIMER); ! 252: setbit(location[position].objects,DEADTIME); ! 253: } ! 254: else puts("What old timer?"); ! 255: break; ! 256: case MAN: ! 257: if (testbit(location[position].objects,MAN)){ ! 258: puts("The man falls to the ground with blood pouring all over his white suit."); ! 259: puts("Your fantasy is over."); ! 260: die(); ! 261: } ! 262: else puts("What man?"); ! 263: break; ! 264: case NATIVE: ! 265: if (testbit(location[position].objects,NATIVE)){ ! 266: puts("The girl is blown backwards several feet and lies in a pool of blood."); ! 267: clearbit(location[position].objects,NATIVE); ! 268: setbit(location[position].objects,DEADNATIVE); ! 269: power += 5; ! 270: ego -= 2; ! 271: notes[JINXED]++; ! 272: } else puts("There is no girl here."); ! 273: break; ! 274: case -1: ! 275: puts("Shoot what?"); ! 276: break; ! 277: ! 278: default: ! 279: printf("You can't shoot the %s.\n",objsht[wordvalue[wordnumber]]); ! 280: } ! 281: } ! 282: else puts("You must be a looney."); ! 283: } ! 284: return(firstnumber); ! 285: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.