1 /* 2 * Copyright (c) 1980, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 */ 7 8 #ifndef lint 9 static char sccsid[] = "@(#)checkcond.c 8.1 (Berkeley) 05/31/93"; 10 #endif /* not lint */ 11 12 # include "trek.h" 13 14 /* 15 ** Check for Condition After a Move 16 ** 17 ** Various ship conditions are checked. First we check 18 ** to see if we have already lost the game, due to running 19 ** out of life support reserves, running out of energy, 20 ** or running out of crew members. The check for running 21 ** out of time is in events(). 22 ** 23 ** If we are in automatic override mode (Etc.nkling < 0), we 24 ** don't want to do anything else, lest we call autover 25 ** recursively. 26 ** 27 ** In the normal case, if there is a supernova, we call 28 ** autover() to help us escape. If after calling autover() 29 ** we are still in the grips of a supernova, we get burnt 30 ** up. 31 ** 32 ** If there are no Klingons in this quadrant, we nullify any 33 ** distress calls which might exist. 34 ** 35 ** We then set the condition code, based on the energy level 36 ** and battle conditions. 37 */ 38 39 checkcond() 40 { 41 register int i, j; 42 43 /* see if we are still alive and well */ 44 if (Ship.reserves < 0.0) 45 lose(L_NOLIFE); 46 if (Ship.energy <= 0) 47 lose(L_NOENGY); 48 if (Ship.crew <= 0) 49 lose(L_NOCREW); 50 /* if in auto override mode, ignore the rest */ 51 if (Etc.nkling < 0) 52 return; 53 /* call in automatic override if appropriate */ 54 if (Quad[Ship.quadx][Ship.quady].stars < 0) 55 autover(); 56 if (Quad[Ship.quadx][Ship.quady].stars < 0) 57 lose(L_SNOVA); 58 /* nullify distress call if appropriate */ 59 if (Etc.nkling <= 0) 60 killd(Ship.quadx, Ship.quady, 1); 61 62 /* set condition code */ 63 if (Ship.cond == DOCKED) 64 return; 65 66 if (Etc.nkling > 0) 67 { 68 Ship.cond = RED; 69 return; 70 } 71 if (Ship.energy < Param.energylow) 72 { 73 Ship.cond = YELLOW; 74 return; 75 } 76 Ship.cond = GREEN; 77 return; 78 } 79