BSD 4_3_Tahoe release
[unix-history] / usr / src / games / trek / autover.c
CommitLineData
b6f0a7e4
DF
1/*
2 * Copyright (c) 1980 Regents of the University of California.
e9fb6bea
KB
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
d99e6414
KB
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley. The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
b6f0a7e4
DF
16 */
17
03f9e9f6 18#ifndef lint
ca67e7b4 19static char sccsid[] = "@(#)autover.c 5.4 (Berkeley) 6/18/88";
e9fb6bea 20#endif /* not lint */
03f9e9f6
KM
21
22# include "trek.h"
23
24/*
25** Automatic Override
26**
27** If we should be so unlucky as to be caught in a quadrant
28** with a supernova in it, this routine is called. It is
29** called from checkcond().
30**
31** It sets you to a random warp (guaranteed to be over 6.0)
32** and starts sending you off "somewhere" (whereever that is).
33**
34** Please note that it is VERY important that you reset your
35** warp speed after the automatic override is called. The new
36** warp factor does not stay in effect for just this routine.
37**
38** This routine will never try to send you more than sqrt(2)
39** quadrants, since that is all that is needed.
40*/
41
42autover()
43{
06d69904 44 double dist;
03f9e9f6
KM
45 register int course;
46
5b8cd1f5 47 printf("\07RED ALERT: The %s is in a supernova quadrant\n", Ship.shipname);
03f9e9f6
KM
48 printf("*** Emergency override attempts to hurl %s to safety\n", Ship.shipname);
49 /* let's get our ass out of here */
50 Ship.warp = 6.0 + 2.0 * franf();
51 Ship.warp2 = Ship.warp * Ship.warp;
52 Ship.warp3 = Ship.warp2 * Ship.warp;
53 dist = 0.75 * Ship.energy / (Ship.warp3 * (Ship.shldup + 1));
54 if (dist > 1.4142)
55 dist = 1.4142;
56 course = ranf(360);
57 Etc.nkling = -1;
58 Ship.cond = RED;
59 warp(-1, course, dist);
60 attack(0);
61}