xref: /386bsd/usr/src/games/trek/board.x (revision a2142627)
1 # include	"trek.h"
2 
3 /*
4 **  BOARD A KLINGON
5 **
6 **	A Klingon battle cruiser is boarded.  If the boarding party
7 **	is successful, they take over the vessel, otherwise, you
8 **	have wasted a move.  Needless to say, this move is not free.
9 **
10 **	User parameters are the Klingon to be boarded and the size of
11 **	the boarding party.
12 **
13 **	Three things are computed.  The first is the probability that
14 **	the party takes over the Klingon.  This is dependent on the
15 **	size of the party, the condition of the Klingon (for which
16 **	the energy left is used, which is definately incorrect), and
17 **	the number of losses that the boarding party sustains.  If too
18 **	many of the boarding party are killed, the probability drops
19 **	to zero.  The second quantity computed is the losses that the
20 **	boarding party sustains.  This counts in your score.  It
21 **	depends on the absolute and relative size of the boarding
22 **	party and the strength of the Klingon.  The third quantity
23 **	computed is the number of Klingon captives you get to take.
24 **	It is actually computed as the number of losses they sustain
25 **	subtracted from the size of their crew.  It depends on the
26 **	relative size of the party.  All of these quantities are
27 **	randomized in some fashion.
28 */
29 
board()30 board()
31 {
32 	int			prob;
33 	int			losses;
34 	int			captives;
35 	float			t;
36 	int			party;
37 
38 	if (checkout(XPORTER))
39 		return;
40 
41 	k = selectklingon();
42 	if (!k->srndreq)
43 	{
44 		return (printf("But captain! You must request surrender first\n"));
45 	}
46 
47 	t = party / Param.crew;
48 
49 	prob = 1000 * t;
50 	prob =- 500 * k->power / Param.klingpwr;
51 
52 	losses = party * k->power * t * 0.5 / Param.klingpwr * (franf() + 1.0);
53 	if (losses * 4 > party)
54 		prob = 0;
55 
56 	captives = %%% * (1.0 - t) * 0.5 * (franf() + 1.0);
57 
58 	if (prob > ranf(1000))
59 		success!!!;
60