X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=reports.c;h=f0dc134eb88d29d975e7cb753952030d2882ef97;hp=de2ba1b1274928937e1b150a41457535d9e7b3b9;hb=1268b882a9dc50ce93658979aaf1147b1cfbe11a;hpb=5db6160de8bad4de189d3b54dd54011260c7a34f diff --git a/reports.c b/reports.c index de2ba1b..f0dc134 100644 --- a/reports.c +++ b/reports.c @@ -6,7 +6,7 @@ void attakreport(int curt) { if (!curt) { - if (game.future[FCDBAS] < 1e30) { + if (game.future[FCDBAS] < FOREVER) { prout("Starbase in %s is currently under Commander attack.", cramlc(quadrant, batx, baty)); prout("It can hold out until Stardate %d.", @@ -19,7 +19,7 @@ void attakreport(int curt) (int)game.future[FSCDBAS]); } } else { - if (game.future[FCDBAS] < 1e30) + if (game.future[FCDBAS] < FOREVER) proutn("Base in %i - %i attacked by C. Alive until %.1f", batx, baty, game.future[FCDBAS]); if (isatb == 1) proutn("Base in %i - %i attacked by S. Alive until %.1f", game.state.isx, game.state.isy, game.future[FSCDBAS]); @@ -54,10 +54,9 @@ void report(void) if (skill>SKILL_GOOD && thawed && !alldone) prout("No plaque is allowed."); if (tourn) prout("This is tournament game %d.", tourn); prout("Your secret password is \"%s\"",game.passwd); - proutn("%d of %d Klingons have been killed", - game.state.killk+game.state.killc+game.state.nsckill, inkling); - if (game.state.killc) prout(", including %d Commander%s.", game.state.killc, game.state.killc==1?"":"s"); - else if (game.state.killk+game.state.nsckill > 0) prout(", but no Commanders."); + 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) prout(", but no Commanders."); else prout("."); if (skill > SKILL_FAIR) prout("The Super Commander has %sbeen destroyed.", game.state.nscrem?"not ":""); @@ -89,7 +88,7 @@ void report(void) prout("."); } if ((game.damage[DRADIO] == 0.0 || condit == IHDOCKED)&& - game.future[FDSPROB] != 1e30) { + game.future[FDSPROB] != FOREVER) { if (isarmed) proutn("An armed deep space probe is in"); else @@ -124,7 +123,7 @@ void lrscan(void) prout("LONG-RANGE SENSORS DAMAGED."); return; } - proutn("Starbase's long-range scan"); + prout("Starbase's long-range scan"); } else { prout("Long-range scan"); @@ -132,12 +131,18 @@ void lrscan(void) for (x = quadx-1; x <= quadx+1; x++) { proutn(" "); for (y = quady-1; y <= quady+1; y++) { - if (x == 0 || x > GALSIZE || y == 0 || y > GALSIZE) + if (!VALID_QUADRANT(x, y)) proutn(" -1"); else { - if (game.state.galaxy[x][y] 0 ? game.state.galaxy[x][y]+SUPERNOVA_PLACE : 1; + if (!game.damage[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; + if (game.state.galaxy[x][y].supernova) + proutn(" ***"); + else + proutn(" %3d", game.state.chart[x][y].klingons*100 + game.state.chart[x][y].starbase * 10 + game.state.chart[x][y].stars); } } prout(" "); @@ -165,52 +170,63 @@ void dreprt(void) if (!jdam) prout("All devices functional."); } +void rechart(void) +/* update the chart in the Enterprise's computer from galaxy data */ +{ + int i, j; + 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; + } +} + void chart(int nn) { int i,j; - char *cp; chew(); - if (stdamtim != 1e30 && stdamtim != game.state.date && condit == IHDOCKED) { - proutn("Spock- \"I revised the Star Chart from the starbase's records.\"\n\r"); - } - if (nn == 0) proutn(" STAR CHART FOR THE KNOWN GALAXY\n\r"); - if (stdamtim != 1e30) { - if (condit == IHDOCKED) { - /* We are docked, so restore chart from base information */ - stdamtim = game.state.date; - for (i=1; i <= GALSIZE ; i++) - for (j=1; j <= GALSIZE; j++) - if (game.starch[i][j] == 1) game.starch[i][j] = game.state.galaxy[i][j]+SUPERNOVA_PLACE; - } - else { - proutn("(Last surveillance update %d stardates ago.", - (int)(game.state.date-stdamtim)); - } + + if (game.damage[DRADIO] == 0.0) + rechart(); + + if (lastchart < game.state.date && condit == IHDOCKED) { + prout("Spock- \"I revised the Star Chart from the starbase's records.\""); + rechart(); } + if (nn == 0) prout(" STAR CHART FOR THE KNOWN GALAXY"); + if (game.state.date > lastchart) + prout("(Last surveillance update %d stardates ago).", + (int)(game.state.date-lastchart)); prout(" 1 2 3 4 5 6 7 8"); - for (i = 1; i <= GALSIZE; i++) { + for_quadrants(i) { proutn("%d |", i); - for (j = 1; j <= GALSIZE; j++) { + for_quadrants(j) { char buf[4]; - proutn(" "); - if (game.starch[i][j] == CHART_UNKNOWN) - strcpy(buf, ".1."); - else if (game.starch[i][j] == 0) - strcpy(buf, "..."); - else if (game.state.galaxy[i][j]>=SUPERNOVA_PLACE) + if ((game.options & OPTION_SHOWME) && i == quadx && j == quady) + proutn("<"); + else + proutn(" "); + if (game.state.galaxy[i][j].supernova) strcpy(buf, "***"); + else if (!game.state.galaxy[i][j].charted && game.state.galaxy[i][j].starbase) + strcpy(buf, ".1."); + else if (game.state.galaxy[i][j].charted) + sprintf(buf, "%3d", game.state.chart[i][j].klingons*100 + game.state.chart[i][j].starbase * 10 + game.state.chart[i][j].stars); else - sprintf(buf, "%03d", game.state.galaxy[i][j]); - for (cp = buf; cp < buf + sizeof(buf); cp++) - if (*cp == '0') - *cp = '.'; + strcpy(buf, "..."); proutn(buf); + if ((game.options & OPTION_SHOWME) && i == quadx && j == quady) + proutn(">"); + else + proutn(" "); } proutn(" |"); - if (i0.0 ? game.state.galaxy[quadx][quady]+SUPERNOVA_PLACE:1; + else prout(" Short-range scan"); + if (goodScan && !game.damage[DRADIO]) { + game.state.chart[quadx][quady].klingons = game.state.galaxy[quadx][quady].klingons; + game.state.chart[quadx][quady].starbase = game.state.galaxy[quadx][quady].starbase; + game.state.chart[quadx][quady].stars = game.state.galaxy[quadx][quady].stars; + game.state.galaxy[quadx][quady].charted = TRUE; + } scan(); if (isit("chart")) nn = TRUE; if (isit("no")) rightside = FALSE; chew(); - proutn(" 1 2 3 4 5 6 7 8 9 10\n\r"); + prout(" 1 2 3 4 5 6 7 8 9 10"); break; case SCAN_REQUEST: while (scan() == IHEOL) @@ -347,9 +356,9 @@ int srscan(int l) if (strncmp(citem,requests[req],min(2,strlen(citem)))==0) break; if (req > sizeof(requests)/sizeof(requests[0])) { - prout("UNRECOGNIZED REQUEST. Legal requests are:\n" - " date, condition, position, lsupport, warpfactor,\n" - " energy, torpedoes, shields, klingons, time, bases."); + prout("UNRECOGNIZED REQUEST. Legal requests are:"); + prout(" date, condition, position, lsupport, warpfactor,"); + prout(" energy, torpedoes, shields, klingons, time, bases."); return FALSE; } // no break @@ -367,13 +376,13 @@ int srscan(int l) jj = (req!=0 ? req : i); if (leftside && i <= QUADSIZE) { proutn("%2d ", i); - for (j = 1; j <= QUADSIZE; j++) { + for_sectors(j) { sectscan(goodScan, i, j); } } if (rightside) status(jj); - if (i GALSIZE || ix1 < 1 || iy1 > GALSIZE || iy1 < 1 || - ix2 > QUADSIZE || ix2 < 1 || iy2 > QUADSIZE || iy2 < 1) { + if (!VALID_QUADRANT(ix1, iy1) || !VALID_SECTOR(ix2, iy2)) { huh(); return; }