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: }
Defined functions
die
defined in line
50; used 18 times
land
defined in line
34; used 1 times
live
defined in line
57; used 2 times
post
defined in line
65; used 2 times
rate
defined in line
89; used 4 times
ride
defined in line
143; used 1 times
Defined variables
sccsid
defined in line
8;
never used