1 #ifndef lint 2 static char sccsid[] = "@(#)srscan.c 4.1 (Berkeley) 03/23/83"; 3 #endif not lint 4 5 # include "trek.h" 6 # include "getpar.h" 7 8 /* 9 ** SHORT RANGE SENSOR SCAN 10 ** 11 ** A short range scan is taken of the current quadrant. If the 12 ** flag 'f' is one, it is an "auto srscan", which is not done 13 ** unless in 'fast' mode. It does a status report and a srscan. 14 ** If 'f' is -1, you get a status report only. If it is zero, 15 ** you get a srscan and an optional status report. The status 16 ** report is taken if you enter "srscan yes"; for all srscans 17 ** thereafter you get a status report with your srscan until 18 ** you type "srscan no". It defaults to on. 19 ** 20 ** The current quadrant is filled in on the computer chart. 21 */ 22 23 char *Color[4] 24 { 25 "GREEN", 26 "DOCKED", 27 "YELLOW", 28 "RED" 29 }; 30 31 srscan(f) 32 int f; 33 { 34 register int i, j; 35 register int statinfo; 36 char *s; 37 int percent; 38 struct quad *q; 39 extern struct cvntab Skitab[]; 40 extern struct cvntab Lentab[]; 41 struct cvntab *p; 42 43 if (f >= 0 && check_out(SRSCAN)) 44 { 45 return; 46 } 47 if (f) 48 statinfo = 1; 49 else 50 { 51 if (!testnl()) 52 Etc.statreport = getynpar("status report"); 53 statinfo = Etc.statreport; 54 } 55 if (f > 0) 56 { 57 Etc.statreport = 1; 58 if (!Etc.fast) 59 return; 60 } 61 if (f >= 0) 62 { 63 printf("\nShort range sensor scan\n"); 64 q = &Quad[Ship.quadx][Ship.quady]; 65 q->scanned = q->klings * 100 + q->bases * 10 + q->stars; 66 printf(" "); 67 for (i = 0; i < NSECTS; i++) 68 { 69 printf("%d ", i); 70 } 71 printf("\n"); 72 } 73 74 for (i = 0; i < NSECTS; i++) 75 { 76 if (f >= 0) 77 { 78 printf("%d ", i); 79 for (j = 0; j < NSECTS; j++) 80 printf("%c ", Sect[i][j]); 81 printf("%d", i); 82 if (statinfo) 83 printf(" "); 84 } 85 if (statinfo) 86 switch (i) 87 { 88 case 0: 89 printf("stardate %.2f", Now.date); 90 break; 91 case 1: 92 printf("condition %s", Color[Ship.cond]); 93 if (Ship.cloaked) 94 printf(", CLOAKED"); 95 break; 96 case 2: 97 printf("position %d,%d/%d,%d",Ship.quadx, Ship.quady, Ship.sectx, Ship.secty); 98 break; 99 case 3: 100 printf("warp factor %.1f", Ship.warp); 101 break; 102 case 4: 103 printf("total energy %d", Ship.energy); 104 break; 105 case 5: 106 printf("torpedoes %d", Ship.torped); 107 break; 108 case 6: 109 s = "down"; 110 if (Ship.shldup) 111 s = "up"; 112 if (damaged(SHIELD)) 113 s = "damaged"; 114 percent = 100.0 * Ship.shield / Param.shield; 115 printf("shields %s, %d%%", s, percent); 116 break; 117 case 7: 118 printf("Klingons left %d", Now.klings); 119 break; 120 case 8: 121 printf("time left %.2f", Now.time); 122 break; 123 case 9: 124 printf("life support "); 125 if (damaged(LIFESUP)) 126 { 127 printf("damaged, reserves = %.2f", Ship.reserves); 128 break; 129 } 130 printf("active"); 131 break; 132 } 133 printf("\n"); 134 } 135 if (f < 0) 136 { 137 printf("current crew %d\n", Ship.crew); 138 printf("brig space %d\n", Ship.brigfree); 139 printf("Klingon power %d\n", Param.klingpwr); 140 p = &Lentab[Game.length - 1]; 141 if (Game.length > 2) 142 p--; 143 printf("Length, Skill %s%s, ", p->abrev, p->full); 144 p = &Skitab[Game.skill - 1]; 145 printf("%s%s\n", p->abrev, p->full); 146 return; 147 } 148 printf(" "); 149 for (i = 0; i < NSECTS; i++) 150 printf("%d ", i); 151 printf("\n"); 152 153 if (q->systemname & Q_DISTRESSED) 154 printf("Distressed "); 155 if (q->systemname) 156 printf("Starsystem %s\n", systemname(q)); 157 } 158