X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=src%2Freports.c;h=3a6b192a728d7a1de13ac2e01480d41bd1b4e67c;hp=f0dc134eb88d29d975e7cb753952030d2882ef97;hb=e54b9a0b731451101601a746887d35d7d0224859;hpb=e535e2ef833a03ec84d0f002d684c07ddde893f1 diff --git a/src/reports.c b/src/reports.c index f0dc134..3a6b192 100644 --- a/src/reports.c +++ b/src/reports.c @@ -8,11 +8,11 @@ void attakreport(int curt) if (!curt) { if (game.future[FCDBAS] < FOREVER) { prout("Starbase in %s is currently under Commander attack.", - cramlc(quadrant, batx, baty)); + cramlc(quadrant, game.batx, game.baty)); prout("It can hold out until Stardate %d.", (int)game.future[FCDBAS]); } - if (isatb == 1) { + if (game.isatb == 1) { prout("Starbase in %s is under Super-commander attack.", cramlc(quadrant, game.state.isx, game.state.isy)); prout("It can hold out until Stardate %d.", @@ -20,8 +20,8 @@ void attakreport(int curt) } } else { 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 C. Alive until %.1f", game.batx, game.baty, game.future[FCDBAS]); + if (game.isatb == 1) proutn("Base in %i - %i attacked by S. Alive until %.1f", game.state.isx, game.state.isy, game.future[FSCDBAS]); } clreol(); @@ -33,14 +33,14 @@ void report(void) char *s1,*s2,*s3; chew(); - s1 = (thawed?"thawed ":""); - switch (length) { + s1 = (game.thawed?"game.thawed ":""); + switch (game.length) { case 1: s2="short"; break; case 2: s2="medium"; break; case 4: s2="long"; break; default: s2="unknown length"; break; } - switch (skill) { + switch (game.skill) { case SKILL_NOVICE: s3="novice"; break; case SKILL_FAIR: s3="fair"; break; case SKILL_GOOD: s3="good"; break; @@ -50,59 +50,59 @@ void report(void) } prout(""); prout("You %s playing a %s%s %s game.", - alldone? "were": "are now", s1, s2, s3); - if (skill>SKILL_GOOD && thawed && !alldone) prout("No plaque is allowed."); - if (tourn) prout("This is tournament game %d.", tourn); + game.alldone? "were": "are now", 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); 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 (skill > SKILL_FAIR) prout("The Super Commander has %sbeen destroyed.", + if (game.skill > SKILL_FAIR) prout("The Super Commander has %sbeen destroyed.", game.state.nscrem?"not ":""); - if (game.state.rembase != inbase) { + if (game.state.rembase != game.inbase) { proutn("There "); - if (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", inbase-game.state.rembase); + proutn("have been %d bases", game.inbase-game.state.rembase); } prout(" destroyed, %d remaining.", game.state.rembase); } - else prout("There are %d bases.", inbase); - if (game.damage[DRADIO] == 0.0 || condit == IHDOCKED || iseenit) { + else prout("There are %d bases.", game.inbase); + if (game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED || game.iseenit) { /* Don't report this if not seen and either the radio is dead or not at base! */ attakreport(0); - iseenit = 1; + game.iseenit = 1; } - if (casual) prout("%d casualt%s suffered so far.", - casual, casual==1? "y" : "ies"); - if (nhelp) prout("There were %d call%s for help.", - nhelp, nhelp==1 ? "" : "s"); - if (ship == IHE) { + 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 (nprobes) proutn("%d", nprobes); + if (game.nprobes) proutn("%d", game.nprobes); else proutn("no"); proutn(" deep space probe"); - if (nprobes!=1) proutn("s"); + if (game.nprobes!=1) proutn("s"); prout("."); } - if ((game.damage[DRADIO] == 0.0 || condit == IHDOCKED)&& + if ((game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED)&& game.future[FDSPROB] != FOREVER) { - if (isarmed) + if (game.isarmed) proutn("An armed deep space probe is in"); else proutn("A deep space probe is in"); - proutn(cramlc(quadrant, probecx, probecy)); + proutn(cramlc(quadrant, game.probecx, game.probecy)); prout("."); } - if (icrystl) { - if (cryprob <= .05) + if (game.icrystl) { + if (game.cryprob <= .05) prout("Dilithium crystals aboard ship... not yet used."); else { int i=0; double ai = 0.05; - while (cryprob > ai) { + while (game.cryprob > ai) { ai *= 2.0; i++; } @@ -119,7 +119,7 @@ void lrscan(void) chew(); if (game.damage[DLRSENS] != 0.0) { /* Now allow base's sensors if docked */ - if (condit != IHDOCKED) { + if (game.condit != IHDOCKED) { prout("LONG-RANGE SENSORS DAMAGED."); return; } @@ -128,9 +128,9 @@ void lrscan(void) else { prout("Long-range scan"); } - for (x = quadx-1; x <= quadx+1; x++) { + for (x = game.quadx-1; x <= game.quadx+1; x++) { proutn(" "); - for (y = quady-1; y <= quady+1; y++) { + for (y = game.quady-1; y <= game.quady+1; y++) { if (!VALID_QUADRANT(x, y)) proutn(" -1"); else { @@ -164,7 +164,7 @@ void dreprt(void) prout(" %16s %8.2f %8.2f", device[i], game.damage[i]+0.05, - docfac*game.damage[i]+0.005); + game.docfac*game.damage[i]+0.005); } } if (!jdam) prout("All devices functional."); @@ -174,7 +174,7 @@ void rechart(void) /* update the chart in the Enterprise's computer from galaxy data */ { int i, j; - lastchart = game.state.date; + game.lastchart = game.state.date; for_quadrants(i) for_quadrants(j) if (game.state.galaxy[i][j].charted) { @@ -192,21 +192,21 @@ void chart(int nn) if (game.damage[DRADIO] == 0.0) rechart(); - if (lastchart < game.state.date && condit == IHDOCKED) { + if (game.lastchart < game.state.date && game.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) + if (game.state.date > game.lastchart) prout("(Last surveillance update %d stardates ago).", - (int)(game.state.date-lastchart)); + (int)(game.state.date-game.lastchart)); prout(" 1 2 3 4 5 6 7 8"); for_quadrants(i) { proutn("%d |", i); for_quadrants(j) { char buf[4]; - if ((game.options & OPTION_SHOWME) && i == quadx && j == quady) + if ((game.options & OPTION_SHOWME) && i == game.quadx && j == game.quady) proutn("<"); else proutn(" "); @@ -219,7 +219,7 @@ void chart(int nn) else strcpy(buf, "..."); proutn(buf); - if ((game.options & OPTION_SHOWME) && i == quadx && j == quady) + if ((game.options & OPTION_SHOWME) && i == game.quadx && j == game.quady) proutn(">"); else proutn(" "); @@ -227,20 +227,21 @@ void chart(int nn) proutn(" |"); if (iinhabited != UNINHABITED) + proutn("Major system %s", systemname(here)); + else + proutn("Sector is uninhabited"); + } + + break; + case 11: attakreport(1); break; } @@ -320,15 +331,16 @@ static void status(int req) int srscan(int l) { + /* the "sy" request is undocumented */ static char requests[][3] = - {"","da","co","po","ls","wa","en","to","sh","kl","ti"}; + {"","da","co","po","ls","wa","en","to","sh","kl","sy", "ti"}; int leftside=TRUE, rightside=TRUE, i, j, jj, req=0, nn=FALSE; int goodScan=TRUE; switch (l) { case SCAN_FULL: // SRSCAN if (game.damage[DSRSENS] != 0) { /* Allow base's sensors if docked */ - if (condit != IHDOCKED) { + if (game.condit != IHDOCKED) { prout(" S.R. SENSORS DAMAGED!"); goodScan=FALSE; } @@ -337,10 +349,10 @@ int srscan(int l) } 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; + game.state.chart[game.quadx][game.quady].klingons = game.state.galaxy[game.quadx][game.quady].klingons; + game.state.chart[game.quadx][game.quady].starbase = game.state.galaxy[game.quadx][game.quady].starbase; + game.state.chart[game.quadx][game.quady].stars = game.state.galaxy[game.quadx][game.quady].stars; + game.state.galaxy[game.quadx][game.quady].charted = TRUE; } scan(); if (isit("chart")) nn = TRUE; @@ -358,7 +370,7 @@ int srscan(int l) if (req > sizeof(requests)/sizeof(requests[0])) { prout("UNRECOGNIZED REQUEST. Legal requests are:"); prout(" date, condition, position, lsupport, warpfactor,"); - prout(" energy, torpedoes, shields, klingons, time, bases."); + prout(" energy, torpedoes, shields, klingons, time, system, bases."); return FALSE; } // no break @@ -371,7 +383,7 @@ int srscan(int l) leftside=FALSE; break; } - if (condit != IHDOCKED) newcnd(); + if (game.condit != IHDOCKED) newcnd(); for (i = 1; i <= max(QUADSIZE, sizeof(requests)/sizeof(requests[0])); i++) { jj = (req!=0 ? req : i); if (leftside && i <= QUADSIZE) { @@ -425,9 +437,9 @@ void eta(void) ix2 = aaitem + 0.5; } else { - if (quady>ix1) ix2 = 1; + if (game.quady>ix1) ix2 = 1; else ix2=QUADSIZE; - if (quadx>iy1) iy2 = 1; + if (game.quadx>iy1) iy2 = 1; else iy2=QUADSIZE; } @@ -435,8 +447,8 @@ void eta(void) huh(); return; } - dist = sqrt(square(iy1-quadx+0.1*(iy2-sectx))+ - square(ix1-quady+0.1*(ix2-secty))); + game.dist = sqrt(square(iy1-game.quadx+0.1*(iy2-game.sectx))+ + square(ix1-game.quady+0.1*(ix2-game.secty))); wfl = FALSE; if (prompt) prout("Answer \"no\" if you don't know the value:"); @@ -447,7 +459,7 @@ void eta(void) ttime = aaitem; if (ttime > game.state.date) ttime -= game.state.date; // Actually a star date if (ttime <= 1e-10 || - (twarp=(floor(sqrt((10.0*dist)/ttime)*10.0)+1.0)/10.0) > 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; @@ -470,11 +482,11 @@ void eta(void) } while (TRUE) { chew(); - ttime = (10.0*dist)/square(twarp); - tpower = dist*twarp*twarp*twarp*(shldup+1); - if (tpower >= energy) { + ttime = (10.0*game.dist)/square(twarp); + tpower = game.dist*twarp*twarp*twarp*(game.shldup+1); + if (tpower >= game.energy) { prout("Insufficient energy, sir."); - if (shldup==0 || tpower > energy*2.0) { + if (game.shldup==0 || tpower > game.energy*2.0) { if (!wfl) return; proutn("New warp factor to try? "); if (scan() == IHREAL) { @@ -498,7 +510,7 @@ void eta(void) } else proutn("Remaining"); - prout(" energy will be %.2f.", energy-tpower); + prout(" game.energy will be %.2f.", game.energy-tpower); if (wfl) { prout("And we will arrive at stardate %.2f.", game.state.date+ttime); @@ -514,9 +526,9 @@ void eta(void) prout("Unfortunately, the Federation will be destroyed by then."); if (twarp > 6.0) prout("You'll be taking risks at that speed, Captain"); - if ((isatb==1 && game.state.isy == ix1 && game.state.isx == iy1 && + if ((game.isatb==1 && game.state.isy == ix1 && game.state.isx == iy1 && game.future[FSCDBAS]< ttime+game.state.date)|| - (game.future[FCDBAS]