1 /*
2 * Copyright (c) 1980, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * %sccs.include.redist.c%
6 */
7
8 #ifndef lint
9 static char sccsid[] = "@(#)ram.c 8.1 (Berkeley) 05/31/93";
10 #endif /* not lint */
11
12 # include "trek.h"
13
14 /*
15 ** RAM SOME OBJECT
16 **
17 ** You have run into some sort of object. It may be a Klingon,
18 ** a star, or a starbase. If you run into a star, you are really
19 ** stupid, because there is no hope for you.
20 **
21 ** If you run into something else, you destroy that object. You
22 ** also rack up incredible damages.
23 */
24
ram(ix,iy)25 ram(ix, iy)
26 int ix, iy;
27 {
28 register int i;
29 register char c;
30
31 printf("\07RED ALERT\07: collision imminent\n");
32 c = Sect[ix][iy];
33 switch (c)
34 {
35
36 case KLINGON:
37 printf("%s rams Klingon at %d,%d\n", Ship.shipname, ix, iy);
38 killk(ix, iy);
39 break;
40
41 case STAR:
42 case INHABIT:
43 printf("Yeoman Rand: Captain, isn't it getting hot in here?\n");
44 sleep(2);
45 printf("Spock: Hull temperature approaching 550 Degrees Kelvin.\n");
46 lose(L_STAR);
47
48 case BASE:
49 printf("You ran into the starbase at %d,%d\n", ix, iy);
50 killb(Ship.quadx, Ship.quady);
51 /* don't penalize the captain if it wasn't his fault */
52 if (!damaged(SINS))
53 Game.killb += 1;
54 break;
55 }
56 sleep(2);
57 printf("%s heavily damaged\n", Ship.shipname);
58
59 /* select the number of deaths to occur */
60 i = 10 + ranf(20 * Game.skill);
61 Game.deaths += i;
62 Ship.crew -= i;
63 printf("McCoy: Take it easy Jim; we had %d casualties.\n", i);
64
65 /* damage devices with an 80% probability */
66 for (i = 0; i < NDEV; i++)
67 {
68 if (ranf(100) < 20)
69 continue;
70 damage(i, (2.5 * (franf() + franf()) + 1.0) * Param.damfac[i]);
71 }
72
73 /* no chance that your shields remained up in all that */
74 Ship.shldup = 0;
75 }
76