X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=src%2Freports.c;h=22a7cee19eafa012f2036e438a03ea27d75402fd;hp=f0dc134eb88d29d975e7cb753952030d2882ef97;hb=459d6afcbe13be588b29c8bd1fbffb39b13fdee1;hpb=e535e2ef833a03ec84d0f002d684c07ddde893f1 diff --git a/src/reports.c b/src/reports.c index f0dc134..22a7cee 100644 --- a/src/reports.c +++ b/src/reports.c @@ -6,23 +6,23 @@ void attakreport(int curt) { if (!curt) { - if (game.future[FCDBAS] < FOREVER) { + if (is_scheduled(FCDBAS)) { prout("Starbase in %s is currently under Commander attack.", - cramlc(quadrant, batx, baty)); + cramlc(quadrant, game.battle)); prout("It can hold out until Stardate %d.", - (int)game.future[FCDBAS]); + (int)scheduled(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)); + cramlc(quadrant, game.state.kscmdr)); prout("It can hold out until Stardate %d.", - (int)game.future[FSCDBAS]); + (int)scheduled(FSCDBAS)); } } 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 S. Alive until %.1f", game.state.isx, game.state.isy, game.future[FSCDBAS]); + if (is_scheduled(FCDBAS)) + proutn("Base in %i - %i attacked by C. Alive until %.1f", game.battle.x, game.battle.y, scheduled(FCDBAS)); + if (game.isatb) + proutn("Base in %i - %i attacked by S. Alive until %.1f", game.state.kscmdr.x, game.state.kscmdr.y, scheduled(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)&& - game.future[FDSPROB] != FOREVER) { - if (isarmed) + if ((game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED) + && is_scheduled(FDSPROB)) { + 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.probec)); 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,14 +128,14 @@ void lrscan(void) else { prout("Long-range scan"); } - for (x = quadx-1; x <= quadx+1; x++) { + for (x = game.quadrant.x-1; x <= game.quadrant.x+1; x++) { proutn(" "); - for (y = quady-1; y <= quady+1; y++) { + for (y = game.quadrant.y-1; y <= game.quadrant.y+1; y++) { if (!VALID_QUADRANT(x, y)) proutn(" -1"); else { if (!game.damage[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; @@ -151,7 +151,8 @@ void lrscan(void) void dreprt(void) { - int jdam = FALSE, i; + bool jdam = false; + int i; chew(); for (i = 0; i < NDEVICES; i++) { @@ -159,12 +160,12 @@ void dreprt(void) if (!jdam) { prout("DEVICE -REPAIR TIMES-"); prout(" IN FLIGHT DOCKED"); - jdam = TRUE; + jdam = true; } 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 +175,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 +193,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.quadrant.x && j == game.quadrant.y) proutn("<"); else proutn(" "); @@ -219,7 +220,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.quadrant.x && j == game.quadrant.y) proutn(">"); else proutn(" "); @@ -227,20 +228,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,31 +332,33 @@ 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"}; - int leftside=TRUE, rightside=TRUE, i, j, jj, req=0, nn=FALSE; - int goodScan=TRUE; + {"","da","co","po","ls","wa","en","to","sh","kl","sy", "ti"}; + + int i, j, jj, req=0; + int goodScan=true, leftside=true, rightside=true, nn=false; 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; + goodScan=false; } else prout(" [Using Base's sensors]"); } 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.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; + game.state.galaxy[game.quadrant.x][game.quadrant.y].charted = true; } scan(); - if (isit("chart")) nn = TRUE; - if (isit("no")) rightside = FALSE; + if (isit("chart")) nn = true; + if (isit("no")) rightside = false; chew(); prout(" 1 2 3 4 5 6 7 8 9 10"); break; @@ -358,20 +372,20 @@ 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."); - return FALSE; + prout(" energy, torpedoes, shields, klingons, time, system, bases."); + return false; } // no break case SCAN_STATUS: // STATUS chew(); - leftside = FALSE; + leftside = false; skip(1); // no break case SCAN_NO_LEFTSIDE: // REQUEST - leftside=FALSE; + 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) { @@ -393,8 +407,8 @@ int srscan(int l) void eta(void) { - int ix1, ix2, iy1, iy2, prompt=FALSE; - int wfl; + int ix1, ix2, iy1, iy2; + bool wfl, prompt = false; double ttime, twarp, tpower; if (game.damage[DCOMPTR] != 0.0) { prout("COMPUTER DAMAGED, USE A POCKET CALCULATOR."); @@ -402,7 +416,7 @@ void eta(void) return; } if (scan() != IHREAL) { - prompt = TRUE; + prompt = true; chew(); proutn("Destination quadrant and/or sector? "); if (scan()!=IHREAL) { @@ -425,9 +439,9 @@ void eta(void) ix2 = aaitem + 0.5; } else { - if (quady>ix1) ix2 = 1; + if (game.quadrant.y>ix1) ix2 = 1; else ix2=QUADSIZE; - if (quadx>iy1) iy2 = 1; + if (game.quadrant.x>iy1) iy2 = 1; else iy2=QUADSIZE; } @@ -435,19 +449,19 @@ void eta(void) huh(); return; } - dist = sqrt(square(iy1-quadx+0.1*(iy2-sectx))+ - square(ix1-quady+0.1*(ix2-secty))); - wfl = FALSE; + game.dist = sqrt(square(iy1-game.quadrant.x+0.1*(iy2-game.sector.x))+ + square(ix1-game.quadrant.y+0.1*(ix2-game.sector.y))); + wfl = false; if (prompt) prout("Answer \"no\" if you don't know the value:"); - while (TRUE) { + 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 <= 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; @@ -458,7 +472,7 @@ void eta(void) chew(); proutn("Warp factor? "); if (scan()== IHREAL) { - wfl = TRUE; + wfl = true; twarp = aaitem; if (twarp<1.0 || twarp > 10.0) { huh(); @@ -468,17 +482,17 @@ void eta(void) } prout("Captain, certainly you can give me one of these."); } - while (TRUE) { + for (;;) { 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) { - wfl = TRUE; + wfl = true; twarp = aaitem; if (twarp<1.0 || twarp > 10.0) { huh(); @@ -498,7 +512,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,13 +528,13 @@ 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 && - game.future[FSCDBAS]< ttime+game.state.date)|| - (game.future[FCDBAS] 10.0) { huh();