121269Sdist /*
2*60857Sbostic * Copyright (c) 1980, 1993
3*60857Sbostic * The Regents of the University of California. All rights reserved.
434205Sbostic *
542605Sbostic * %sccs.include.redist.c%
621269Sdist */
721269Sdist
811661Smckusick #ifndef lint
9*60857Sbostic static char sccsid[] = "@(#)checkcond.c 8.1 (Berkeley) 05/31/93";
1034205Sbostic #endif /* not lint */
1111661Smckusick
1211661Smckusick # include "trek.h"
1311661Smckusick
1411661Smckusick /*
1511661Smckusick ** Check for Condition After a Move
1611661Smckusick **
1711661Smckusick ** Various ship conditions are checked. First we check
1811661Smckusick ** to see if we have already lost the game, due to running
1911661Smckusick ** out of life support reserves, running out of energy,
2011661Smckusick ** or running out of crew members. The check for running
2111661Smckusick ** out of time is in events().
2211661Smckusick **
2311661Smckusick ** If we are in automatic override mode (Etc.nkling < 0), we
2411661Smckusick ** don't want to do anything else, lest we call autover
2511661Smckusick ** recursively.
2611661Smckusick **
2711661Smckusick ** In the normal case, if there is a supernova, we call
2811661Smckusick ** autover() to help us escape. If after calling autover()
2911661Smckusick ** we are still in the grips of a supernova, we get burnt
3011661Smckusick ** up.
3111661Smckusick **
3211661Smckusick ** If there are no Klingons in this quadrant, we nullify any
3311661Smckusick ** distress calls which might exist.
3411661Smckusick **
3511661Smckusick ** We then set the condition code, based on the energy level
3611661Smckusick ** and battle conditions.
3711661Smckusick */
3811661Smckusick
checkcond()3911661Smckusick checkcond()
4011661Smckusick {
4111661Smckusick register int i, j;
4211661Smckusick
4311661Smckusick /* see if we are still alive and well */
4411661Smckusick if (Ship.reserves < 0.0)
4511661Smckusick lose(L_NOLIFE);
4611661Smckusick if (Ship.energy <= 0)
4711661Smckusick lose(L_NOENGY);
4811661Smckusick if (Ship.crew <= 0)
4911661Smckusick lose(L_NOCREW);
5011661Smckusick /* if in auto override mode, ignore the rest */
5111661Smckusick if (Etc.nkling < 0)
5211661Smckusick return;
5311661Smckusick /* call in automatic override if appropriate */
5411661Smckusick if (Quad[Ship.quadx][Ship.quady].stars < 0)
5511661Smckusick autover();
5611661Smckusick if (Quad[Ship.quadx][Ship.quady].stars < 0)
5711661Smckusick lose(L_SNOVA);
5811661Smckusick /* nullify distress call if appropriate */
5911661Smckusick if (Etc.nkling <= 0)
6011661Smckusick killd(Ship.quadx, Ship.quady, 1);
6111661Smckusick
6211661Smckusick /* set condition code */
6311661Smckusick if (Ship.cond == DOCKED)
6411661Smckusick return;
6511661Smckusick
6611661Smckusick if (Etc.nkling > 0)
6711661Smckusick {
6811661Smckusick Ship.cond = RED;
6911661Smckusick return;
7011661Smckusick }
7111661Smckusick if (Ship.energy < Param.energylow)
7211661Smckusick {
7311661Smckusick Ship.cond = YELLOW;
7411661Smckusick return;
7511661Smckusick }
7611661Smckusick Ship.cond = GREEN;
7711661Smckusick return;
7811661Smckusick }
79