Better project documentation.
[super-star-trek.git] / battle.c
index 1f043c61d9700a1dcbccf7ce35ac1dde23e6deec..5a29bb8ea4f16545d75cb3c54a331f68eee4ba13 100644 (file)
--- a/battle.c
+++ b/battle.c
@@ -152,11 +152,9 @@ void ram(int ibumpd, int ienm, int ix, int iy) {
        crmshp();\r
        prout(" heavily damaged.");\r
        icas = 10.0+20.0*Rand();\r
-       proutn("***Sickbay reports ");\r
-       crami(icas, 1);\r
-       prout(" casualties.");\r
+       prout("***Sickbay reports %d casualties", icas);\r
        casual += icas;\r
-       for (l=1; l <= ndevice; l++) {\r
+       for (l=1; l <= NDEVICES; l++) {\r
                if (l == DDRAY) continue; // Don't damage deathray \r
                if (game.damage[l] < 0) continue;\r
                extradm = (10.0*type*Rand()+1.0)*damfac;\r
@@ -193,10 +191,7 @@ void torpedo(double course, double r, int inx, int iny, double *hit) {
                iy = y + 0.5;\r
                if (iy < 1 || iy > 10) break;\r
                if (l==4 || l==9) skip(1);\r
-               cramf(x, 0, 1);\r
-               proutn(" - ");\r
-               cramf(y, 0, 1);\r
-               proutn("   ");\r
+               proutn("%d - %d   ", (int)x, (int)y);\r
                iquad=game.quad[ix][iy];\r
                if (iquad==IHDOT) continue;\r
                /* hit something */\r
@@ -311,7 +306,7 @@ void torpedo(double course, double r, int inx, int iny, double *hit) {
                                prout(" destroyed.");\r
                                game.state.nplankl++;\r
                                game.state.newstuf[quadx][quady] -= 1;\r
-                               game.state.plnets[iplnet] = nulplanet;\r
+                               DESTROY(&game.state.plnets[iplnet]);\r
                                iplnet = 0;\r
                                plnetx = plnety = 0;\r
                                game.quad[ix][iy] = IHDOT;\r
@@ -387,9 +382,7 @@ void torpedo(double course, double r, int inx, int iny, double *hit) {
        if (shoved) {\r
                game.quad[jx][jy]=iquad;\r
                game.quad[ix][iy]=IHDOT;\r
-               proutn(" displaced by blast to");\r
-               cramlc(2, jx, jy);\r
-               skip(1);\r
+               prout(" displaced by blast to %s ", cramlc(sector, jx, jy));\r
                for (ll=1; ll<=nenhere; ll++)\r
                        game.kdist[ll] = game.kavgd[ll] = sqrt(square(sectx-game.kx[ll])+square(secty-game.ky[ll]));\r
                sortkl();\r
@@ -412,7 +405,7 @@ static void fry(double hit) {
        /* Select devices and cause damage */\r
        for (l = 1; l <= ncrit; l++) {\r
                do {\r
-                       j = ndevice*Rand()+1.0;\r
+                       j = NDEVICES*Rand()+1.0;\r
                        /* Cheat to prevent shuttle damage unless on ship */\r
                } while (game.damage[j] < 0.0 || (j == DSHUTTL && iscraft != 1) ||\r
                                 j == DDRAY);\r
@@ -517,8 +510,7 @@ void attack(int k) {
                               shields were down for some strange reason. This\r
                                           doesn't make any sense, so I've fixed it */\r
                ihurt = 1;\r
-               cramf(hit, 0, 2);\r
-               proutn(" unit hit");\r
+               proutn("%d unit hit", (int)hit);\r
                if ((game.damage[DSRSENS] > 0 && itflag) || skill <= 2) {\r
                        proutn(" on the ");\r
                        crmshp();\r
@@ -532,7 +524,7 @@ void attack(int k) {
                if (hit > hitmax) hitmax = hit;\r
                hittot += hit;\r
                fry(hit);\r
-               printf("Hit %g energy %g\n", hit, energy);\r
+               prout("Hit %g energy %g", hit, energy);\r
                energy -= hit;\r
        }\r
        if (energy <= 0) {\r
@@ -551,25 +543,18 @@ void attack(int k) {
        else {\r
                /* Print message if starship suffered hit(s) */\r
                skip(1);\r
-               proutn("Energy left ");\r
-               cramf(energy, 0, 2);\r
-               proutn("    shields ");\r
-               if (shldup) proutn("up, ");\r
-               else if (game.damage[DSHIELD] == 0) proutn("down, ");\r
+               proutn("Energy left %2d    shields ", (int)energy);\r
+               if (shldup) proutn("up ");\r
+               else if (game.damage[DSHIELD] == 0) proutn("down ");\r
                else proutn("damaged, ");\r
        }\r
-       crami(percent, 1);\r
-       proutn("%   torpedoes left ");\r
-       crami(torps, 1);\r
-       skip(1);\r
+       prout("%d%%,   torpedoes left %d", percent, torps);\r
        /* Check if anyone was hurt */\r
        if (hitmax >= 200 || hittot >= 500) {\r
                int icas= hittot*Rand()*0.015;\r
                if (icas >= 2) {\r
                        skip(1);\r
-                       proutn("Mc Coy-  \"Sickbay to bridge.  We suffered ");\r
-                       crami(icas, 1);\r
-                       prout(" casualties");\r
+                       prout("Mc Coy-  \"Sickbay to bridge.  We suffered %d casualties", icas);\r
                        prout("   in that last attack.\"");\r
                        casual += icas;\r
                }\r
@@ -705,8 +690,7 @@ void photon(void) {
                        return;\r
                }\r
                else if (key == IHEOL) {\r
-                       crami(torps,1);\r
-                       prout(" torpedoes left.");\r
+                       prout("%d torpedoes left.", torps);\r
                        proutn("Number of torpedoes to fire- ");\r
                        key = scan();\r
                }\r
@@ -758,9 +742,7 @@ void photon(void) {
        if (i == 1 && key == IHEOL) {\r
                /* prompt for each one */\r
                for (i = 1; i <= n; i++) {\r
-                       proutn("Target sector for torpedo number");\r
-                       crami(i, 2);\r
-                       proutn("- ");\r
+                   proutn("Target sector for torpedo number %d- ", i);\r
                        key = scan();\r
                        if (key != IHREAL) {\r
                                huh();\r
@@ -787,9 +769,7 @@ void photon(void) {
                        /* misfire! */\r
                        r = (Rand()+1.2) * r;\r
                        if (n>1) {\r
-                               prouts("***TORPEDO NUMBER");\r
-                               crami(i, 2);\r
-                               prouts(" MISFIRES.");\r
+                           prouts("***TORPEDO NUMBER %d MISFIRES", i);\r
                        }\r
                        else prouts("***TORPEDO MISFIRES.");\r
                        skip(1);\r
@@ -805,9 +785,7 @@ void photon(void) {
                if (shldup != 0 || condit == IHDOCKED) r *= 1.0 + 0.0001*shield;\r
                if (n != 1) {\r
                        skip(1);\r
-                       proutn("Track for torpedo number");\r
-                       crami(i, 2);\r
-                       proutn("-   ");\r
+                       proutn("Track for torpedo number %d-  ", i);\r
                }\r
                else {\r
                        skip(1);\r
@@ -862,9 +840,7 @@ static int checkshctrl(double rpow) {
        if (icas) {\r
                skip(1);\r
                prout("McCoy to bridge- \"Severe radiation burns, Jim.");\r
-               proutn("  ");\r
-               crami(icas, 1);\r
-               prout(" casualties so far.\"");\r
+               prout("  %d casualties so far.\"", icas);\r
                casual -= icas;\r
        }\r
        skip(1);\r
@@ -977,9 +953,7 @@ void phasers(void) {
                                key = scan();\r
                        }\r
                        if (key != IHREAL && nenhere != 0) {\r
-                               proutn("Phasers locked on target. Energy available =");\r
-                               cramf(ifast?energy-200.0:energy,1,2);\r
-                               skip(1);\r
+                               prout("Phasers locked on target. Energy available = %.2f", ifast?energy-200.0:energy);\r
                        }\r
                        do {\r
                                while (key != IHREAL) {\r
@@ -989,8 +963,8 @@ void phasers(void) {
                                }\r
                                rpow = aaitem;\r
                                if (rpow >= (ifast?energy-200:energy)) {\r
-                                       proutn("Energy available= ");\r
-                                       cramf(ifast?energy-200:energy, 1,2);\r
+                                   proutn("Energy available= %.2f",\r
+                                       ifast?energy-200:energy);\r
                                        skip(1);\r
                                        key = IHEOL;\r
                                }\r
@@ -1017,7 +991,7 @@ void phasers(void) {
                                for (i = 1; i <= nenhere; i++) {\r
                                        hits[i] = 0.0;\r
                                        if (powrem <= 0) continue;\r
-                                       hits[i] = fabs(game.kpower[i])/(phasefac*pow(0.90,game.kdist[i]));\r
+                                       hits[i] = fabs(game.kpower[i])/(PHASEFAC*pow(0.90,game.kdist[i]));\r
                                        over = (0.01 + 0.05*Rand())*hits[i];\r
                                        temp = powrem;\r
                                        powrem -= hits[i] + over;\r
@@ -1035,8 +1009,7 @@ void phasers(void) {
                                        prout("phaser energy.");\r
                                }\r
                                else {\r
-                                       cramf(extra, 0, 2);\r
-                                       prout(" expended on empty space.");\r
+                                       prout("%d expended on empty space.", (int)extra);\r
                                }\r
                        }\r
                        break;\r
@@ -1061,8 +1034,8 @@ void phasers(void) {
                                int ii = game.kx[k], jj = game.ky[k];\r
                                int ienm = game.quad[ii][jj];\r
                                if (msgflag) {\r
-                                       proutn("Energy available= ");\r
-                                       cramf(energy-.006-(ifast?200:0), 0, 2);\r
+                                       proutn("Energy available= %.2f",\r
+                                              energy-.006-(ifast?200:0));\r
                                        skip(1);\r
                                        msgflag = 0;\r
                                        rpow = 0.0;\r
@@ -1080,12 +1053,10 @@ void phasers(void) {
                                if (key == IHEOL) {\r
                                        chew();\r
                                        if (ipoop && k > kz) {\r
-                                               int irec=(fabs(game.kpower[k])/(phasefac*pow(0.9,game.kdist[k])))*\r
+                                               int irec=(fabs(game.kpower[k])/(PHASEFAC*pow(0.9,game.kdist[k])))*\r
                                                                 (1.01+0.05*Rand()) + 1.0;\r
                                                kz = k;\r
-                                               proutn("(");\r
-                                               crami(irec, 1);\r
-                                               proutn(")  ");\r
+                                               proutn("(%d)", irec);\r
                                        }\r
                                        proutn("units to fire at ");\r
                                        crmena(0, ienm, 2, ii, jj);\r
@@ -1179,14 +1150,13 @@ void hittem(double *hits) {
                hit = wham*pow(dustfac,game.kdist[kk]);\r
                kpini = game.kpower[kk];\r
                kp = fabs(kpini);\r
-               if (phasefac*hit < kp) kp = phasefac*hit;\r
+               if (PHASEFAC*hit < kp) kp = PHASEFAC*hit;\r
                game.kpower[kk] -= (game.kpower[kk] < 0 ? -kp: kp);\r
                kpow = game.kpower[kk];\r
                ii = game.kx[kk];\r
                jj = game.ky[kk];\r
                if (hit > 0.005) {\r
-                       cramf(hit, 0, 2);\r
-                       proutn(" unit hit on ");\r
+                       proutn("%d unit hit on ", (int)hit);\r
                }\r
                else\r
                        proutn("Very small hit on ");\r
@@ -1202,9 +1172,8 @@ void hittem(double *hits) {
                else /* decide whether or not to emasculate klingon */\r
                        if (kpow > 0 && Rand() >= 0.9 &&\r
                                kpow <= ((0.4 + 0.4*Rand())*kpini)) {\r
-                               proutn("***Mr. Spock-  \"Captain, the vessel at");\r
-                               cramlc(2,ii,jj);\r
-                               skip(1);\r
+                               prout("***Mr. Spock-  \"Captain, the vessel at ",\r
+                                       cramlc(sector,ii,jj));\r
                                prout("   has just lost its firepower.\"");\r
                                game.kpower[kk] = -kpow;\r
                        }\r