|
|
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[] = "@(#)com6.c 1.3 4/24/85"; ! 9: #endif ! 10: ! 11: #include "externs.h" ! 12: ! 13: launch() ! 14: { ! 15: if (testbit(location[position].objects,VIPER) && !notes[CANTLAUNCH]){ ! 16: if (fuel > 4){ ! 17: clearbit(location[position].objects,VIPER); ! 18: position = location[position].up; ! 19: notes[LAUNCHED] = 1; ! 20: time++; ! 21: fuel -= 4; ! 22: puts("You climb into the viper and prepare for launch."); ! 23: puts("With a touch of your thumb the turbo engines ignite, thrusting you back into\nyour seat."); ! 24: return(1); ! 25: } ! 26: else ! 27: puts("Not enough fuel to launch."); ! 28: } ! 29: else ! 30: puts("Can't launch."); ! 31: return(0); ! 32: } ! 33: ! 34: land() ! 35: { ! 36: if (notes[LAUNCHED] && testbit(location[position].objects,LAND) && location[position].down){ ! 37: notes[LAUNCHED] = 0; ! 38: position = location[position].down; ! 39: setbit(location[position].objects,VIPER); ! 40: fuel -= 2; ! 41: time++; ! 42: puts("You are down."); ! 43: return(1); ! 44: } ! 45: else ! 46: puts("You can't land here."); ! 47: return(0); ! 48: } ! 49: ! 50: die() /* endgame */ ! 51: { ! 52: printf("bye.\nYour rating was %s.\n", rate()); ! 53: post(' '); ! 54: exit(0); ! 55: } ! 56: ! 57: live() ! 58: { ! 59: puts("\nYou win!"); ! 60: post('!'); ! 61: exit(0); ! 62: } ! 63: ! 64: #include <sys/time.h> ! 65: post(ch) ! 66: char ch; ! 67: { ! 68: FILE *fp; ! 69: struct timeval tv; ! 70: char *date; ! 71: int s = sigblock(sigmask(SIGINT)); ! 72: ! 73: gettimeofday(&tv, (struct timezone *)0); /* can't call time */ ! 74: date = ctime(&tv.tv_sec); ! 75: date[24] = '\0'; ! 76: if (fp = fopen(logfile,"a")) { ! 77: fprintf(fp, "%s %8s %c%20s", date, uname, ch, rate()); ! 78: if (wiz) ! 79: fprintf(fp, " wizard\n"); ! 80: else if (tempwiz) ! 81: fprintf(fp, " WIZARD!\n"); ! 82: else ! 83: fprintf(fp, "\n"); ! 84: } else ! 85: perror(logfile); ! 86: sigsetmask(s); ! 87: } ! 88: ! 89: char * ! 90: rate() ! 91: { ! 92: int score; ! 93: ! 94: score = max(max(pleasure,power),ego); ! 95: if (score == pleasure){ ! 96: if (score < 5) ! 97: return("novice"); ! 98: else if (score < 20) ! 99: return("junior voyeur"); ! 100: else if (score < 35) ! 101: return("Don Juan"); ! 102: else return("Marquis De Sade"); ! 103: } ! 104: else if (score == power){ ! 105: if (score < 5) ! 106: return("serf"); ! 107: else if (score < 8) ! 108: return("Samurai"); ! 109: else if (score < 13) ! 110: return("Klingon"); ! 111: else if (score < 22) ! 112: return("Darth Vader"); ! 113: else return("Sauron the Great"); ! 114: } ! 115: else{ ! 116: if (score < 5) ! 117: return("Polyanna"); ! 118: else if (score < 10) ! 119: return("philanthropist"); ! 120: else if (score < 20) ! 121: return("Tattoo"); ! 122: else return("Mr. Roarke"); ! 123: } ! 124: } ! 125: ! 126: drive() ! 127: { ! 128: if (testbit(location[position].objects,CAR)){ ! 129: puts("You hop in the car and turn the key. There is a perceptible grating noise,"); ! 130: puts("and an explosion knocks you unconscious..."); ! 131: clearbit(location[position].objects,CAR); ! 132: setbit(location[position].objects,CRASH); ! 133: injuries[5] = injuries[6] = injuries[7] = injuries[8] = 1; ! 134: time += 15; ! 135: zzz(); ! 136: return(0); ! 137: } ! 138: else ! 139: puts("There is nothing to drive here."); ! 140: return(-1); ! 141: } ! 142: ! 143: ride() ! 144: { ! 145: if (testbit(location[position].objects,HORSE)){ ! 146: puts("You climb onto the stallion and kick it in the guts. The stupid steed launches"); ! 147: puts("forward through bush and fern. You are thrown and the horse gallups off."); ! 148: clearbit(location[position].objects,HORSE); ! 149: while (!(position = rnd(NUMOFROOMS+1)) || !OUTSIDE || !beenthere[position] || location[position].flyhere); ! 150: setbit(location[position].objects,HORSE); ! 151: if (location[position].north) ! 152: position = location[position].north; ! 153: else if (location[position].south) ! 154: position = location[position].south; ! 155: else if (location[position].east) ! 156: position = location[position].east; ! 157: else ! 158: position = location[position].west; ! 159: return(0); ! 160: } ! 161: else puts("There is no horse here."); ! 162: return(-1); ! 163: } ! 164: ! 165: light() /* synonyms = {strike, smoke} */ ! 166: { /* for matches, cigars */ ! 167: if (testbit(inven,MATCHES) && matchcount){ ! 168: puts("Your match splutters to life."); ! 169: time++; ! 170: matchlight = 1; ! 171: matchcount--; ! 172: if (position == 217){ ! 173: puts("The whole bungalow explodes with an intense blast."); ! 174: die(); ! 175: } ! 176: } ! 177: else puts("You're out of matches."); ! 178: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.