Abstract out damage checks.
[super-star-trek.git] / src / reports.c
index ac4f417b047b579ad3d211e3192988287046da1e..b2ee2b7d2bd04e0d1429812aa68eca380e8f82a3 100644 (file)
@@ -21,7 +21,7 @@ void attakreport(int curt)
     } else {
         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 == 1)
+        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();
@@ -69,7 +69,7 @@ void report(void)
        prout(" destroyed, %d remaining.", game.state.rembase);
     }
     else prout("There are %d bases.", game.inbase);
-    if (game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED || game.iseenit) {
+    if (!damaged(DRADIO) || game.condit == IHDOCKED || game.iseenit) {
        /* Don't report this if not seen and
           either the radio is dead or not at base! */
        attakreport(0);
@@ -87,7 +87,7 @@ void report(void)
        if (game.nprobes!=1) proutn("s");
        prout(".");
     }
-    if ((game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED)
+    if ((!damaged(DRADIO) || game.condit == IHDOCKED)
                && is_scheduled(FDSPROB)) {
        if (game.isarmed) 
            proutn("An armed deep space probe is in");
@@ -117,7 +117,7 @@ void lrscan(void)
 {
     int x, y;
     chew();
-    if (game.damage[DLRSENS] != 0.0) {
+    if (damaged(DLRSENS)) {
        /* Now allow base's sensors if docked */
        if (game.condit != IHDOCKED) {
            prout("LONG-RANGE SENSORS DAMAGED.");
@@ -134,8 +134,8 @@ void lrscan(void)
            if (!VALID_QUADRANT(x, y))
                proutn("  -1");
            else {
-               if (!game.damage[DRADIO])
-                   game.state.galaxy[x][y].charted = TRUE;
+               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;
@@ -151,15 +151,16 @@ void lrscan(void)
 
 void dreprt(void) 
 {
-    int jdam = FALSE, i;
+    bool jdam = false;
+    int i;
     chew();
 
     for (i = 0; i < NDEVICES; i++) {
-       if (game.damage[i] > 0.0) {
+       if (damaged(i)) {
            if (!jdam) {
                prout("DEVICE            -REPAIR TIMES-");
                prout("                IN FLIGHT   DOCKED");
-               jdam = TRUE;
+               jdam = true;
            }
            prout("  %16s %8.2f  %8.2f", 
                  device[i],
@@ -189,7 +190,7 @@ void chart(int nn)
     int i,j;
     chew();
 
-    if (game.damage[DRADIO] == 0.0)
+    if (!damaged(DRADIO))
        rechart();
 
     if (game.lastchart < game.state.date && game.condit == IHDOCKED) {
@@ -279,7 +280,7 @@ static void status(int req)
        break;
     case 4:
        proutn("Life Support  ");
-       if (game.damage[DLIFSUP] != 0.0) {
+       if (damaged(DLIFSUP)) {
            if (game.condit == IHDOCKED)
                proutn("DAMAGED, Base provides");
            else
@@ -301,7 +302,7 @@ static void status(int req)
        break;
     case 8:
        proutn("Shields       ");
-       if (game.damage[DSHIELD] != 0)
+       if (damaged(DSHIELD))
            proutn("DAMAGED,");
        else if (game.shldup)
            proutn("UP,");
@@ -315,8 +316,8 @@ static void status(int req)
        break;
     case 10:
        if (game.options & OPTION_WORLDS) {
-           planet *here = game.state.galaxy[game.quadrant.x][game.quadrant.y].planet;
-           if (here && here->inhabited != UNINHABITED)
+           int here = game.state.galaxy[game.quadrant.x][game.quadrant.y].planet;
+           if (here != NOPLANET && game.state.plnets[here].inhabited != UNINHABITED)
                proutn("Major system  %s", systemname(here));
            else
                proutn("Sector is uninhabited");
@@ -334,29 +335,30 @@ int srscan(int l)
     /* the "sy" request is undocumented */
     static char requests[][3] =
        {"","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;
+    
+    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) {
+       if (damaged(DSRSENS)) {
            /* Allow base's sensors if docked */
            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]) { 
+       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;
-           game.state.galaxy[game.quadrant.x][game.quadrant.y].charted = TRUE;
+           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;
@@ -371,16 +373,16 @@ int srscan(int l)
            prout("UNRECOGNIZED REQUEST. Legal requests are:");
            prout("  date, condition, position, lsupport, warpfactor,");
            prout("  energy, torpedoes, shields, klingons, time, system, bases.");
-           return FALSE;
+           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 (game.condit != IHDOCKED) newcnd();
@@ -405,16 +407,16 @@ 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) {
+    if (damaged(DCOMPTR)) {
        prout("COMPUTER DAMAGED, USE A POCKET CALCULATOR.");
        skip(1);
        return;
     }
     if (scan() != IHREAL) {
-       prompt = TRUE;
+       prompt = true;
        chew();
        proutn("Destination quadrant and/or sector? ");
        if (scan()!=IHREAL) {
@@ -449,10 +451,10 @@ void eta(void)
     }
     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;
+    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) {
@@ -470,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();
@@ -480,17 +482,17 @@ void eta(void)
        }
        prout("Captain, certainly you can give me one of these.");
     }
-    while (TRUE) {
+    for (;;) {
        chew();
        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 (game.shldup==0 || tpower > game.energy*2.0) {
+           if (!game.shldup || 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();
@@ -532,7 +534,7 @@ void eta(void)
            prout("The starbase there will be destroyed by then.");
        proutn("New warp factor to try? ");
        if (scan() == IHREAL) {
-           wfl = TRUE;
+           wfl = true;
            twarp = aaitem;
            if (twarp<1.0 || twarp > 10.0) {
                huh();