|
|
1.1 root 1: #ifndef lint
2: static char sccsid[] = "@(#)destruct.c 4.3 (Berkeley) 5/27/83";
3: #endif not lint
4:
5: # include "trek.h"
6:
7: /*
8: ** Self Destruct Sequence
9: **
10: ** The computer starts up the self destruct sequence. Obviously,
11: ** if the computer is out nothing can happen. You get a countdown
12: ** and a request for password. This must match the password that
13: ** you entered at the start of the game.
14: **
15: ** You get to destroy things when you blow up; hence, it is
16: ** possible to win the game by destructing if you take the last
17: ** Klingon with you.
18: **
19: ** By the way, the \032 in the message is a ^Z, which is because
20: ** the terminal in my office is an ADM-3, which uses that char-
21: ** acter to clear the screen. I also stick in a \014 (form feed)
22: ** because that clears some other screens.
23: **
24: ** Uses trace flag 41
25: */
26:
27: destruct()
28: {
29: char checkpass[15];
30: register int i, j;
31: double zap;
32:
33: if (damaged(COMPUTER))
34: return (out(COMPUTER));
35: printf("\n --- WORKING ---\n");
36: sleep(3);
37: /* output the count 10 9 8 7 6 */
38: for (i = 10; i > 5; i--)
39: {
40: for (j = 10; j > i; j--)
41: printf(" ");
42: printf("%d\n", i);
43: sleep(1);
44: }
45: /* check for password on new line only */
46: skiptonl(0);
47: getstrpar("Enter password verification", checkpass, 14, 0);
48: sleep(2);
49: if (!sequal(checkpass, Game.passwd))
50: return (printf("Self destruct sequence aborted\n"));
51: printf("Password verified; self destruct sequence continues:\n");
52: sleep(2);
53: /* output count 5 4 3 2 1 0 */
54: for (i = 5; i >= 0; i--)
55: {
56: sleep(1);
57: for (j = 5; j > i; j--)
58: printf(" ");
59: printf("%d\n", i);
60: }
61: sleep(2);
62: printf("\032\014***** %s destroyed *****\n", Ship.shipname);
63: Game.killed = 1;
64: /* let's see what we can blow up!!!! */
65: zap = 20.0 * Ship.energy;
66: Game.deaths += Ship.crew;
67: for (i = 0; i < Etc.nkling; )
68: {
69: if (Etc.klingon[i].power * Etc.klingon[i].dist <= zap)
70: killk(Etc.klingon[i].x, Etc.klingon[i].y);
71: else
72: i++;
73: }
74: /* if we didn't kill the last Klingon (detected by killk), */
75: /* then we lose.... */
76: lose(L_DSTRCT);
77: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.