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