Commit | Line | Data |
---|---|---|
fdc7d56f EW |
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 | ||
7abe8a37 | 7 | #ifndef lint |
fdc7d56f | 8 | static char sccsid[] = "@(#)com6.c 1.3 %G%"; |
7abe8a37 EW |
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; | |
a7c71d1e | 71 | int s = sigblock(sigmask(SIGINT)); |
7abe8a37 EW |
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); | |
a7c71d1e | 86 | sigsetmask(s); |
7abe8a37 EW |
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)){ | |
a7c71d1e | 129 | puts("You hop in the car and turn the key. There is a perceptible grating noise,"); |
7abe8a37 EW |
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 | } |