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