|
|
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 ! 6: * provided that the above copyright notice and this paragraph are ! 7: * duplicated in all such forms and that any documentation, ! 8: * advertising materials, and other materials related to such ! 9: * distribution and use acknowledge that the software was developed ! 10: * by the University of California, Berkeley. The name of the ! 11: * University may not be used to endorse or promote products derived ! 12: * from this software without specific prior written permission. ! 13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 16: */ ! 17: ! 18: #ifndef lint ! 19: static char sccsid[] = "@(#)srscan.c 5.3 (Berkeley) 6/18/88"; ! 20: #endif /* not lint */ ! 21: ! 22: # include "trek.h" ! 23: # include "getpar.h" ! 24: ! 25: /* ! 26: ** SHORT RANGE SENSOR SCAN ! 27: ** ! 28: ** A short range scan is taken of the current quadrant. If the ! 29: ** flag 'f' is one, it is an "auto srscan", which is not done ! 30: ** unless in 'fast' mode. It does a status report and a srscan. ! 31: ** If 'f' is -1, you get a status report only. If it is zero, ! 32: ** you get a srscan and an optional status report. The status ! 33: ** report is taken if you enter "srscan yes"; for all srscans ! 34: ** thereafter you get a status report with your srscan until ! 35: ** you type "srscan no". It defaults to on. ! 36: ** ! 37: ** The current quadrant is filled in on the computer chart. ! 38: */ ! 39: ! 40: char *Color[4] = ! 41: { ! 42: "GREEN", ! 43: "DOCKED", ! 44: "YELLOW", ! 45: "RED" ! 46: }; ! 47: ! 48: srscan(f) ! 49: int f; ! 50: { ! 51: register int i, j; ! 52: register int statinfo; ! 53: char *s; ! 54: int percent; ! 55: struct quad *q; ! 56: extern struct cvntab Skitab[]; ! 57: extern struct cvntab Lentab[]; ! 58: struct cvntab *p; ! 59: ! 60: if (f >= 0 && check_out(SRSCAN)) ! 61: { ! 62: return; ! 63: } ! 64: if (f) ! 65: statinfo = 1; ! 66: else ! 67: { ! 68: if (!testnl()) ! 69: Etc.statreport = getynpar("status report"); ! 70: statinfo = Etc.statreport; ! 71: } ! 72: if (f > 0) ! 73: { ! 74: Etc.statreport = 1; ! 75: if (!Etc.fast) ! 76: return; ! 77: } ! 78: if (f >= 0) ! 79: { ! 80: printf("\nShort range sensor scan\n"); ! 81: q = &Quad[Ship.quadx][Ship.quady]; ! 82: q->scanned = q->klings * 100 + q->bases * 10 + q->stars; ! 83: printf(" "); ! 84: for (i = 0; i < NSECTS; i++) ! 85: { ! 86: printf("%d ", i); ! 87: } ! 88: printf("\n"); ! 89: } ! 90: ! 91: for (i = 0; i < NSECTS; i++) ! 92: { ! 93: if (f >= 0) ! 94: { ! 95: printf("%d ", i); ! 96: for (j = 0; j < NSECTS; j++) ! 97: printf("%c ", Sect[i][j]); ! 98: printf("%d", i); ! 99: if (statinfo) ! 100: printf(" "); ! 101: } ! 102: if (statinfo) ! 103: switch (i) ! 104: { ! 105: case 0: ! 106: printf("stardate %.2f", Now.date); ! 107: break; ! 108: case 1: ! 109: printf("condition %s", Color[Ship.cond]); ! 110: if (Ship.cloaked) ! 111: printf(", CLOAKED"); ! 112: break; ! 113: case 2: ! 114: printf("position %d,%d/%d,%d",Ship.quadx, Ship.quady, Ship.sectx, Ship.secty); ! 115: break; ! 116: case 3: ! 117: printf("warp factor %.1f", Ship.warp); ! 118: break; ! 119: case 4: ! 120: printf("total energy %d", Ship.energy); ! 121: break; ! 122: case 5: ! 123: printf("torpedoes %d", Ship.torped); ! 124: break; ! 125: case 6: ! 126: s = "down"; ! 127: if (Ship.shldup) ! 128: s = "up"; ! 129: if (damaged(SHIELD)) ! 130: s = "damaged"; ! 131: percent = 100.0 * Ship.shield / Param.shield; ! 132: printf("shields %s, %d%%", s, percent); ! 133: break; ! 134: case 7: ! 135: printf("Klingons left %d", Now.klings); ! 136: break; ! 137: case 8: ! 138: printf("time left %.2f", Now.time); ! 139: break; ! 140: case 9: ! 141: printf("life support "); ! 142: if (damaged(LIFESUP)) ! 143: { ! 144: printf("damaged, reserves = %.2f", Ship.reserves); ! 145: break; ! 146: } ! 147: printf("active"); ! 148: break; ! 149: } ! 150: printf("\n"); ! 151: } ! 152: if (f < 0) ! 153: { ! 154: printf("current crew %d\n", Ship.crew); ! 155: printf("brig space %d\n", Ship.brigfree); ! 156: printf("Klingon power %d\n", Param.klingpwr); ! 157: p = &Lentab[Game.length - 1]; ! 158: if (Game.length > 2) ! 159: p--; ! 160: printf("Length, Skill %s%s, ", p->abrev, p->full); ! 161: p = &Skitab[Game.skill - 1]; ! 162: printf("%s%s\n", p->abrev, p->full); ! 163: return; ! 164: } ! 165: printf(" "); ! 166: for (i = 0; i < NSECTS; i++) ! 167: printf("%d ", i); ! 168: printf("\n"); ! 169: ! 170: if (q->qsystemname & Q_DISTRESSED) ! 171: printf("Distressed "); ! 172: if (q->qsystemname) ! 173: printf("Starsystem %s\n", systemname(q)); ! 174: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.