|
|
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.