|
|
1.1 root 1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted provided
6: * that: (1) source distributions retain this entire copyright notice and
7: * comment, and (2) distributions including binaries display the following
8: * acknowledgement: ``This product includes software developed by the
9: * University of California, Berkeley and its contributors'' in the
10: * documentation or other materials provided with the distribution and in
11: * all advertising materials mentioning features or use of this software.
12: * Neither the name of the University nor the names of its contributors may
13: * be used to endorse or promote products derived from this software without
14: * specific prior written permission.
15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
16: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
17: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18: */
19:
20: #ifndef lint
21: static char sccsid[] = "@(#)autover.c 5.5 (Berkeley) 6/1/90";
22: #endif /* not lint */
23:
24: # include "trek.h"
25:
26: /*
27: ** Automatic Override
28: **
29: ** If we should be so unlucky as to be caught in a quadrant
30: ** with a supernova in it, this routine is called. It is
31: ** called from checkcond().
32: **
33: ** It sets you to a random warp (guaranteed to be over 6.0)
34: ** and starts sending you off "somewhere" (whereever that is).
35: **
36: ** Please note that it is VERY important that you reset your
37: ** warp speed after the automatic override is called. The new
38: ** warp factor does not stay in effect for just this routine.
39: **
40: ** This routine will never try to send you more than sqrt(2)
41: ** quadrants, since that is all that is needed.
42: */
43:
44: autover()
45: {
46: double dist;
47: register int course;
48:
49: printf("\07RED ALERT: The %s is in a supernova quadrant\n", Ship.shipname);
50: printf("*** Emergency override attempts to hurl %s to safety\n", Ship.shipname);
51: /* let's get our ass out of here */
52: Ship.warp = 6.0 + 2.0 * franf();
53: Ship.warp2 = Ship.warp * Ship.warp;
54: Ship.warp3 = Ship.warp2 * Ship.warp;
55: dist = 0.75 * Ship.energy / (Ship.warp3 * (Ship.shldup + 1));
56: if (dist > 1.4142)
57: dist = 1.4142;
58: course = ranf(360);
59: Etc.nkling = -1;
60: Ship.cond = RED;
61: warp(-1, course, dist);
62: attack(0);
63: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.