|
|
1.1 root 1: #ifndef lint
2: static char sccsid[] = "@(#)capture.c 4.3 (Berkeley) 5/27/83";
3: #endif not lint
4:
5: # include "trek.h"
6:
7: /*
8: ** Ask a Klingon To Surrender
9: **
10: ** (Fat chance)
11: **
12: ** The Subspace Radio is needed to ask a Klingon if he will kindly
13: ** surrender. A random Klingon from the ones in the quadrant is
14: ** chosen.
15: **
16: ** The Klingon is requested to surrender. The probability of this
17: ** is a function of that Klingon's remaining power, our power,
18: ** etc.
19: */
20:
21: capture()
22: {
23: register int i;
24: register struct kling *k;
25: double x;
26: extern struct kling *selectklingon();
27:
28: /* check for not cloaked */
29: if (Ship.cloaked)
30: {
31: printf("Ship-ship communications out when cloaked\n");
32: return;
33: }
34: if (damaged(SSRADIO))
35: return (out(SSRADIO));
36: /* find out if there are any at all */
37: if (Etc.nkling <= 0)
38: {
39: printf("Uhura: Getting no response, sir\n");
40: return;
41: }
42:
43: /* if there is more than one Klingon, find out which one */
44: k = selectklingon();
45: Move.free = 0;
46: Move.time = 0.05;
47:
48: /* check out that Klingon */
49: k->srndreq++;
50: x = Param.klingpwr;
51: x *= Ship.energy;
52: x /= k->power * Etc.nkling;
53: x *= Param.srndrprob;
54: i = x;
55: # ifdef xTRACE
56: if (Trace)
57: printf("Prob = %d (%.4f)\n", i, x);
58: # endif
59: if (i > ranf(100))
60: {
61: /* guess what, he surrendered!!! */
62: printf("Klingon at %d,%d surrenders\n", k->x, k->y);
63: i = ranf(Param.klingcrew);
64: if ( i > 0 )
65: printf("%d klingons commit suicide rather than be taken captive\n", Param.klingcrew - i);
66: if (i > Ship.brigfree)
67: i = Ship.brigfree;
68: Ship.brigfree -= i;
69: printf("%d captives taken\n", i);
70: killk(k->x, k->y);
71: return;
72: }
73:
74: /* big surprise, he refuses to surrender */
75: printf("Fat chance, captain\n");
76: return;
77: }
78:
79:
80: /*
81: ** SELECT A KLINGON
82: **
83: ** Cruddy, just takes one at random. Should ask the captain.
84: */
85:
86: struct kling *selectklingon()
87: {
88: register int i;
89:
90: if (Etc.nkling < 2)
91: i = 0;
92: else
93: i = ranf(Etc.nkling);
94: return (&Etc.klingon[i]);
95: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.