X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=src%2Fbattle.c;h=22cc13649df9e51cdc71546222d451b5fb99e465;hb=b3d872bf30cc6b7e4a0b88f0580c2f5e35ccaf2d;hp=c0dac65b0c2f3b2cce110b5053f470fbe9e48021;hpb=459d6afcbe13be588b29c8bd1fbffb39b13fdee1;p=super-star-trek.git diff --git a/src/battle.c b/src/battle.c index c0dac65..22cc136 100644 --- a/src/battle.c +++ b/src/battle.c @@ -59,7 +59,7 @@ void doshield(int i) prout(_("Shields already up.")); return; } - game.shldup = 1; + game.shldup = true; game.shldchg = 1; if (game.condit != IHDOCKED) game.energy -= 50.0; prout(_("Shields raised.")); @@ -72,11 +72,11 @@ void doshield(int i) game.ididit=1; return; case SHDN: - if (game.shldup==0) { + if (!game.shldup) { prout(_("Shields already down.")); return; } - game.shldup=0; + game.shldup=false; game.shldchg=1; prout(_("Shields lowered.")); game.ididit=1; @@ -166,7 +166,7 @@ void ram(int ibumpd, int ienm, coord w) extradm = (10.0*type*Rand()+1.0)*game.damfac; game.damage[l] += game.optime + extradm; /* Damage for at least time of travel! */ } - game.shldup = 0; + game.shldup = false; if (KLINGREM) { pause_game(2); dreprt(); @@ -318,7 +318,7 @@ void torpedo(double course, double r, int inx, int iny, double *hit, int i, int crmena(1, iquad, 2, w); prout(_(" destroyed.")); game.state.nplankl++; - game.state.galaxy[game.quadrant.x][game.quadrant.y].planet = NULL; + game.state.galaxy[game.quadrant.x][game.quadrant.y].planet = NOPLANET; DESTROY(&game.state.plnets[game.iplnet]); game.iplnet = 0; game.plnet.x = game.plnet.y = 0; @@ -328,6 +328,22 @@ void torpedo(double course, double r, int inx, int iny, double *hit, int i, int finish(FDPLANET); } return; + case IHW: /* Hit an inhabited world -- very bad! */ + crmena(1, iquad, 2, w); + prout(_(" destroyed.")); + game.state.nworldkl++; + game.state.galaxy[game.quadrant.x][game.quadrant.y].planet = NOPLANET; + DESTROY(&game.state.plnets[game.iplnet]); + game.iplnet = 0; + game.plnet.x = game.plnet.y = 0; + game.quad[w.x][w.y] = IHDOT; + if (game.landed==1) { + /* captain perishes on planet */ + finish(FDPLANET); + } + prout("You have just destroyed an inhabited planet."); + prout("Celebratory rallies are being held on the Klingon homeworld."); + return; case IHSTAR: /* Hit a star */ if (Rand() > 0.10) { nova(w.x, w.y); @@ -407,10 +423,8 @@ void torpedo(double course, double r, int inx, int iny, double *hit, int i, int setwnd(message_window); } if (shoved) { - coord w; - w.x = jx; w.y = jy; - game.quad[jx][jy]=iquad; game.quad[w.x][w.y]=IHDOT; + game.quad[jx][jy]=iquad; prout(_(" displaced by blast to %s "), cramlc(sector, w)); for_local_enemies(ll) game.kdist[ll] = game.kavgd[ll] = sqrt(square(game.sector.x-game.ks[ll].x)+square(game.sector.y-game.ks[ll].y)); @@ -454,7 +468,7 @@ static void fry(double hit) prout(_(" damaged.")); if (game.damage[DSHIELD] && game.shldup) { prout(_("***Shields knocked down.")); - game.shldup=0; + game.shldup=false; } } @@ -526,7 +540,7 @@ void attack(int torps_ok) return; /* Supernova or finished */ if (hit == 0) continue; } - if (game.shldup != 0 || game.shldchg != 0 || game.condit==IHDOCKED) { + if (game.shldup || game.shldchg != 0 || game.condit==IHDOCKED) { /* shields will take hits */ double absorb, hitsh, propor = pfac*game.shield*(game.condit==IHDOCKED ? 2.1 : 1.0); if(propor < 0.1) propor = 0.1; @@ -1167,13 +1181,13 @@ void phasers(void) prout(_("Sulu- \"Sir, the high-speed shield control has malfunctioned . . .")); prouts(_(" CLICK CLICK POP . . .")); prout(_(" No response, sir!")); - game.shldup = 0; + game.shldup = false; } else prout(_("Shields raised.")); } else - game.shldup = 0; + game.shldup = false; } overheat(rpow); }