summaryrefslogtreecommitdiffstats
path: root/trek/checkcond.c
diff options
context:
space:
mode:
authorcgd <cgd@NetBSD.org>1993-03-21 09:45:37 +0000
committercgd <cgd@NetBSD.org>1993-03-21 09:45:37 +0000
commit77e3814f0c0e3dea4d0032e25666f77e6f83bfff (patch)
tree7eddfcbf3dd12089e71dc3fafb0a106c5c5766c7 /trek/checkcond.c
parente81d63576b2e46ab90da7d75fa155ea57ee4d32e (diff)
downloadbsdgames-darwin-77e3814f0c0e3dea4d0032e25666f77e6f83bfff.tar.gz
bsdgames-darwin-77e3814f0c0e3dea4d0032e25666f77e6f83bfff.tar.zst
bsdgames-darwin-77e3814f0c0e3dea4d0032e25666f77e6f83bfff.zip
initial import of 386bsd-0.1 sources
Diffstat (limited to 'trek/checkcond.c')
-rw-r--r--trek/checkcond.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/trek/checkcond.c b/trek/checkcond.c
new file mode 100644
index 00000000..e490c9bf
--- /dev/null
+++ b/trek/checkcond.c
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 1980 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)checkcond.c 5.4 (Berkeley) 6/1/90";
+#endif /* not lint */
+
+# include "trek.h"
+
+/*
+** Check for Condition After a Move
+**
+** Various ship conditions are checked. First we check
+** to see if we have already lost the game, due to running
+** out of life support reserves, running out of energy,
+** or running out of crew members. The check for running
+** out of time is in events().
+**
+** If we are in automatic override mode (Etc.nkling < 0), we
+** don't want to do anything else, lest we call autover
+** recursively.
+**
+** In the normal case, if there is a supernova, we call
+** autover() to help us escape. If after calling autover()
+** we are still in the grips of a supernova, we get burnt
+** up.
+**
+** If there are no Klingons in this quadrant, we nullify any
+** distress calls which might exist.
+**
+** We then set the condition code, based on the energy level
+** and battle conditions.
+*/
+
+checkcond()
+{
+ register int i, j;
+
+ /* see if we are still alive and well */
+ if (Ship.reserves < 0.0)
+ lose(L_NOLIFE);
+ if (Ship.energy <= 0)
+ lose(L_NOENGY);
+ if (Ship.crew <= 0)
+ lose(L_NOCREW);
+ /* if in auto override mode, ignore the rest */
+ if (Etc.nkling < 0)
+ return;
+ /* call in automatic override if appropriate */
+ if (Quad[Ship.quadx][Ship.quady].stars < 0)
+ autover();
+ if (Quad[Ship.quadx][Ship.quady].stars < 0)
+ lose(L_SNOVA);
+ /* nullify distress call if appropriate */
+ if (Etc.nkling <= 0)
+ killd(Ship.quadx, Ship.quady, 1);
+
+ /* set condition code */
+ if (Ship.cond == DOCKED)
+ return;
+
+ if (Etc.nkling > 0)
+ {
+ Ship.cond = RED;
+ return;
+ }
+ if (Ship.energy < Param.energylow)
+ {
+ Ship.cond = YELLOW;
+ return;
+ }
+ Ship.cond = GREEN;
+ return;
+}