X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=src%2Freports.c;h=5d7c3b1750de58edebfa98a1e2fae93ba2997502;hp=a33e0ba107e80a6bb8a3c27184597c1db1f30687;hb=c873e794bf5a029fef3a5ee5385cc0fec6220fa0;hpb=18e74523dd6261a2672237611a06aa3bf5bf8a15 diff --git a/src/reports.c b/src/reports.c index a33e0ba..5d7c3b1 100644 --- a/src/reports.c +++ b/src/reports.c @@ -3,7 +3,7 @@ #include #include -void attakreport(bool curt) +void attackreport(bool curt) /* report status of bases under attack */ { if (!curt) { @@ -55,40 +55,55 @@ void report(void) skip(1); prout(_("You %s a %s%s %s game."), game.alldone? _("were playing") : _("are playing"), s1, s2, s3); - if (game.skill>SKILL_GOOD && game.thawed && !game.alldone) prout(_("No plaque is allowed.")); - if (game.tourn) prout(_("This is tournament game %d."), game.tourn); + if (game.skill>SKILL_GOOD && game.thawed && !game.alldone) + prout(_("No plaque is allowed.")); + 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) prout(_(", but no Commanders.")); - else prout("."); - if (game.skill > SKILL_FAIR) prout(_("The Super Commander has %sbeen destroyed."), - game.state.nscrem?_("not "):""); + 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("."); + if (game.skill > SKILL_FAIR) + prout(_("The Super Commander has %sbeen destroyed."), + game.state.nscrem?_("not "):""); if (game.state.rembase != game.inbase) { proutn(_("There ")); - if (game.inbase-game.state.rembase==1) proutn(_("has been 1 base")); + if (game.inbase-game.state.rembase==1) + proutn(_("has been 1 base")); else { proutn(_("have been %d bases"), game.inbase-game.state.rembase); } prout(_(" destroyed, %d remaining."), game.state.rembase); } - else prout(_("There are %d bases."), game.inbase); + 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) prout(_("%d casualt%s suffered so far."), - game.casual, game.casual==1? "y" : "ies"); - if (game.nhelp) prout(_("There were %d call%s for help."), - game.nhelp, game.nhelp==1 ? "" : _("s")); + if (game.casual) + prout(_("%d casualt%s suffered so far."), + game.casual, game.casual==1? "y" : "ies"); + if (game.nhelp) + prout(_("There were %d call%s for help."), + game.nhelp, game.nhelp==1 ? "" : _("s")); if (game.ship == IHE) { proutn(_("You have ")); - if (game.nprobes) proutn("%d", game.nprobes); - else proutn(_("no")); + if (game.nprobes) + proutn("%d", game.nprobes); + else + proutn(_("no")); proutn(_(" deep space probe")); - if (game.nprobes!=1) proutn(_("s")); + if (game.nprobes!=1) + proutn(_("s")); prout("."); } if ((!damaged(DRADIO) || game.condition == docked) @@ -138,8 +153,7 @@ void lrscan(void) if (!VALID_QUADRANT(x, y)) proutn(" -1"); else { - if (!damaged(DRADIO)) - game.state.galaxy[x][y].charted = true; + 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; @@ -153,7 +167,7 @@ void lrscan(void) } } -void dreprt(void) +void damagereport(void) /* damage report */ { bool jdam = false; @@ -173,21 +187,61 @@ void dreprt(void) game.docfac*game.damage[i]+0.005); } } - if (!jdam) prout(_("All devices functional.")); + if (!jdam) + 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) @@ -196,22 +250,16 @@ 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("<"); @@ -232,7 +280,8 @@ void chart(void) proutn(" "); } proutn(" |"); - if (iw1.x) w2.x = 1; - else w2.x=QUADSIZE; - if (game.quadrant.x>w1.y) w2.y = 1; - else w2.y=QUADSIZE; + if (game.quadrant.y>w1.x) + w2.x = 1; + else + w2.x=QUADSIZE; + if (game.quadrant.x>w1.y) + w2.y = 1; + else + w2.y=QUADSIZE; } if (!VALID_QUADRANT(w1.x, w1.y) || !VALID_SECTOR(w2.x, w2.y)) { @@ -451,20 +505,23 @@ void eta(void) square(w1.x-game.quadrant.x+0.1*(w2.x-game.sector.x))); wfl = false; - if (prompt) prout(_("Answer \"no\" if you don't know the value:")); + if (prompt) + prout(_("Answer \"no\" if you don't know the value:")); for (;;) { chew(); 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.")); chew(); return; } - if (twarp < 1.0) twarp = 1.0; + if (twarp < 1.0) + twarp = 1.0; break; } chew(); @@ -487,7 +544,8 @@ void eta(void) if (tpower >= game.energy) { prout(_("Insufficient energy, sir.")); if (!game.shldup || tpower > game.energy*2.0) { - if (!wfl) return; + if (!wfl) + return; proutn(_("New warp factor to try? ")); if (scan() == IHREAL) { wfl = true; @@ -548,7 +606,7 @@ void eta(void) } -#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