45 lines
1.3 KiB
C
45 lines
1.3 KiB
C
#ifndef lint
|
||
static char sccsid[] = "@(#)autover.c 1.1 94/10/31 SMI"; /* from UCB 4.2 05/27/83 */
|
||
#endif
|
||
|
||
# include "trek.h"
|
||
|
||
/*
|
||
** Automatic Override
|
||
**
|
||
** If we should be so unlucky as to be caught in a quadrant
|
||
** with a supernova in it, this routine is called. It is
|
||
** called from checkcond().
|
||
**
|
||
** It sets you to a random warp (guaranteed to be over 6.0)
|
||
** and starts sending you off "somewhere" (whereever that is).
|
||
**
|
||
** Please note that it is VERY important that you reset your
|
||
** warp speed after the automatic override is called. The new
|
||
** warp factor does not stay in effect for just this routine.
|
||
**
|
||
** This routine will never try to send you more than sqrt(2)
|
||
** quadrants, since that is all that is needed.
|
||
*/
|
||
|
||
autover()
|
||
{
|
||
double dist;
|
||
register int course;
|
||
|
||
printf("RED ALERT: The %s is in a supernova quadrant\n", Ship.shipname);
|
||
printf("*** Emergency override attempts to hurl %s to safety\n", Ship.shipname);
|
||
/* let's get our ass out of here */
|
||
Ship.warp = 6.0 + 2.0 * franf();
|
||
Ship.warp2 = Ship.warp * Ship.warp;
|
||
Ship.warp3 = Ship.warp2 * Ship.warp;
|
||
dist = 0.75 * Ship.energy / (Ship.warp3 * (Ship.shldup + 1));
|
||
if (dist > 1.4142)
|
||
dist = 1.4142;
|
||
course = ranf(360);
|
||
Etc.nkling = -1;
|
||
Ship.cond = RED;
|
||
warp(-1, course, dist);
|
||
attack(0);
|
||
}
|