#include <stdlib.h>
#include <string.h>
-void attakreport(bool curt)
+void attackreport(bool curt)
/* report status of bases under attack */
{
if (!curt) {
if (game.tourn)
prout(_("This is tournament game %d."), game.tourn);
prout(_("Your secret password is \"%s\""),game.passwd);
- proutn(_("%d of %d Klingons have been killed"), KLINGKILLED, INKLINGTOT);
- if (NKILLC)
- prout(_(", including %d Commander%s."), NKILLC, NKILLC==1?"":_("s"));
- else if (NKILLK + NKILLSC > 0)
+ proutn(_("%d of %d Klingons have been killed"),
+ ((game.inkling + game.incom + game.inscom) - (game.state.remkl + game.state.remcom + game.state.nscrem)),
+ (game.inkling + game.incom + game.inscom));
+ if (game.incom - game.state.remcom)
+ prout(_(", including %d Commander%s."), game.incom - game.state.remcom, (game.incom - game.state.remcom)==1?"":_("s"));
+ else if (game.inkling - game.state.remkl + (game.inscom - game.state.nscrem) > 0)
prout(_(", but no Commanders."));
else
prout(".");
else
prout(_("There are %d bases."), game.inbase);
if (!damaged(DRADIO) || game.condition == docked || game.iseenit) {
- /* Don't report this if not seen and
- either the radio is dead or not at base! */
- attakreport(false);
+ // Don't report this if not seen and
+ // either the radio is dead or not at base!
+ attackreport(false);
game.iseenit = true;
}
if (game.casual)
if (!VALID_QUADRANT(x, y))
proutn(" -1");
else {
- if (!damaged(DRADIO))
- game.state.galaxy[x][y].charted = true;
- game.state.chart[x][y].klingons = game.state.galaxy[x][y].klingons;
- game.state.chart[x][y].starbase = game.state.galaxy[x][y].starbase;
- game.state.chart[x][y].stars = game.state.galaxy[x][y].stars;
+ game.state.galaxy[x][y].charted = true;
+ rechart();
if (game.state.galaxy[x][y].supernova)
proutn(" ***");
else
}
}
-void dreprt(void)
+void damagereport(void)
/* damage report */
{
bool jdam = false;
prout(_("All devices functional."));
}
-void rechart(void)
+static void rechart_quad(int x, int y)
+{
+ if (game.state.galaxy[x][y].charted) {
+ game.state.chart[x][y].klingons = game.state.galaxy[x][y].klingons;
+ game.state.chart[x][y].starbase = game.state.galaxy[x][y].starbase;
+ game.state.chart[x][y].stars = game.state.galaxy[x][y].stars;
+ }
+}
+
+static void rechart_dsradio(void)
/* update the chart in the Enterprise's computer from galaxy data */
{
int i, j;
game.lastchart = game.state.date;
- for_quadrants(i)
- for_quadrants(j)
- if (game.state.galaxy[i][j].charted) {
- game.state.chart[i][j].klingons = game.state.galaxy[i][j].klingons;
- game.state.chart[i][j].starbase = game.state.galaxy[i][j].starbase;
- game.state.chart[i][j].stars = game.state.galaxy[i][j].stars;
- }
+ for (i = 1; i <= GALSIZE; i++)
+ for (j = 1; j <= GALSIZE; j++)
+ rechart_quad(i, j);
+}
+
+static void rechart_lr(void)
+/* update the chart in the Enterprise's computer from galaxy data */
+{
+ int i, j;
+ for (i = game.quadrant.x-1; i <= game.quadrant.x+1; i++) {
+ for (j = game.quadrant.y-1; j <= game.quadrant.y+1; j++) {
+ if (i == game.quadrant.x && j == game.quadrant.y)
+ continue;
+ rechart_quad(i, j);
+ }
+ }
+}
+
+static void rechart_sr(void)
+/* update the chart in the Enterprise's computer from galaxy data */
+{
+ rechart_quad(game.quadrant.x, game.quadrant.y);
+}
+
+void rechart(void)
+{
+ if (!damaged(DRADIO) || game.condition == docked) {
+ if (game.lastchart < game.state.date && game.condition == docked)
+ prout(_("Spock- \"I revised the Star Chart from the "
+ "starbase's records.\""));
+ rechart_dsradio();
+ } else {
+ if (!damaged(DLRSENS))
+ rechart_lr();
+ if (!damaged(DSRSENS))
+ rechart_sr();
+ }
}
void chart(void)
int i,j;
chew();
- if (!damaged(DRADIO))
- rechart();
-
- if (game.lastchart < game.state.date && game.condition == docked) {
- prout(_("Spock- \"I revised the Star Chart from the starbase's records.\""));
- rechart();
- }
+ rechart();
prout(_(" STAR CHART FOR THE KNOWN GALAXY"));
if (game.state.date > game.lastchart)
prout(_("(Last surveillance update %d stardates ago)."),
(int)(game.state.date-game.lastchart));
prout(" 1 2 3 4 5 6 7 8");
- for_quadrants(i) {
+ for (i = 1; i <= GALSIZE; i++) {
proutn("%d |", i);
- for_quadrants(j) {
+ for (j = 1; j <= GALSIZE; j++) {
char buf[4];
if ((game.options & OPTION_SHOWME) && i == game.quadrant.x && j == game.quadrant.y)
proutn("<");
);
RQ(9,
- prstat(_("Klingons Left"), "%d", KLINGREM);
+ prstat(_("Klingons Left"), "%d", game.state.remkl + game.state.remcom + game.state.nscrem);
);
RQ(10,
if (game.options & OPTION_WORLDS) {
int plnet = game.state.galaxy[game.quadrant.x][game.quadrant.y].planet;
- if (plnet != NOPLANET && game.state.plnets[plnet].inhabited != UNINHABITED)
+ if (plnet != NOPLANET && game.state.planets[plnet].inhabited != UNINHABITED)
prstat(_("Major system"), "%s", systnames[plnet]);
else
prout(_("Sector is uninhabited"));
);
RQ(11,
- attakreport(!req);
+ attackreport(!req);
);
#undef RQ
}
else
prout(_(" Short-range scan"));
- if (goodScan && !damaged(DRADIO)) {
- game.state.chart[game.quadrant.x][game.quadrant.y].klingons = game.state.galaxy[game.quadrant.x][game.quadrant.y].klingons;
- game.state.chart[game.quadrant.x][game.quadrant.y].starbase = game.state.galaxy[game.quadrant.x][game.quadrant.y].starbase;
- game.state.chart[game.quadrant.x][game.quadrant.y].stars = game.state.galaxy[game.quadrant.x][game.quadrant.y].stars;
+ if (goodScan) {
game.state.galaxy[game.quadrant.x][game.quadrant.y].charted = true;
+ rechart();
}
prout(" 1 2 3 4 5 6 7 8 9 10");
if (game.condition != docked)
newcnd();
for (i = 1; i <= QUADSIZE; i++) {
proutn("%2d ", i);
- for_sectors(j) {
+ for (j = 1; j <= QUADSIZE; j++) {
sectscan(goodScan, i, j);
}
skip(1);
proutn(_("Time or arrival date? "));
if (scan()==IHREAL) {
ttime = aaitem;
- if (ttime > game.state.date) ttime -= game.state.date; // Actually a star date
+ if (ttime > game.state.date)
+ ttime -= game.state.date; // Actually a star date
if (ttime <= 1e-10 ||
(twarp=(floor(sqrt((10.0*game.dist)/ttime)*10.0)+1.0)/10.0) > 10) {
prout(_("We'll never make it, sir."));
}
-#if BSD_BUG_FOR_BUG
+#ifdef BSD_BUG_FOR_BUG
/*
* A visual scan is made in a particular direction of three sectors
* in the general direction specified. This takes time, and