More BSD features.
[super-star-trek.git] / src / finish.c
index e5a7386cf1cbfb2912a737a525fa5378ddfc94db..9c518b6c4bfed28dfe2496ef8ea0fa63e85510e4 100644 (file)
@@ -6,7 +6,7 @@ void dstrct()
 {
     /* Finish with a BANG! */
     chew();
-    if (game.damage[DCOMPTR] != 0.0) {
+    if (damaged(DCOMPTR)) {
        prout(_("Computer damaged; cannot execute destruct sequence."));
        return;
     }
@@ -61,7 +61,7 @@ void kaboom(void)
        int l=1;
        while (l <= game.nenhere) {
            if (game.kpower[l]*game.kdist[l] <= whammo) 
-               deadkl(game.ks[l].x,game.ks[l].x, game.quad[game.ks[l].x][game.ks[l].y], game.ks[l].x, game.ks[l].y);
+               deadkl(game.ks[l], game.quad[game.ks[l].x][game.ks[l].y], game.ks[l].x, game.ks[l].y);
            l++;
        }
     }
@@ -71,8 +71,8 @@ void kaboom(void)
 
 void finish(FINTYPE ifin) 
 {
-    int igotit = 0;
-    game.alldone = 1;
+    bool igotit = false;
+    game.alldone = true;
     skip(3);
     prout(_("It is stardate %.1f."), game.state.date);
     skip(1);
@@ -84,11 +84,11 @@ void finish(FINTYPE ifin)
 
        prout(_("You have smashed the Klingon invasion fleet and saved"));
        prout(_("the Federation."));
-       game.gamewon=1;
+       game.gamewon = true;
        if (game.alive) {
            double badpt;
            badpt = 5.0*game.state.starkl + game.casual + 10.0*game.state.nplankl +
-               45.*game.nhelp+100.*game.state.basekl;
+               45.*game.nhelp+100.*game.state.basekl+3.*game.abandoned;
            if (game.ship == IHF) badpt += 100.0;
            else if (game.ship == 0) badpt += 200.0;
            if (badpt < 100.0) badpt = 0.0;     // Close enough!
@@ -134,11 +134,7 @@ void finish(FINTYPE ifin)
                    break;
                }
                if (game.skill >= SKILL_EXPERT) {
-                   if (game.thawed
-#ifdef DEBUG
-                       && !game.idebug
-#endif
-                       )
+                   if (game.thawed && !idebug)
                        prout(_("You cannot get a citation, so..."));
                    else {
                        proutn(_("Do you want your Commodore Emeritus Citation printed? "));
@@ -282,6 +278,9 @@ void finish(FINTYPE ifin)
        prout(_("Your ship is drawn to the center of the black hole."));
        prout(_("You are crushed into extremely dense matter."));
        break;
+    case FCREW:
+       prout(_("Your last crew member has died."));
+       break;
     }
     if (game.ship==IHF) game.ship= 0;
     else if (game.ship == IHE) game.ship = IHF;
@@ -330,7 +329,7 @@ void score(void)
     if (game.gamewon == 0) game.state.nromrem = 0; // None captured if no win
     iscore = 10*NKILLK + 50*NKILLC + ithperd + iwon
        - 100*game.state.basekl - 100*klship - 45*game.nhelp -5*game.state.starkl - game.casual
-       + 20*NKILLROM + 200*NKILLSC - 10*game.state.nplankl + game.state.nromrem;
+       + 20*NKILLROM + 200*NKILLSC - 10*game.state.nplankl - 300*game.state.nworldkl + game.state.nromrem;
     if (game.alive == 0) iscore -= 200;
     skip(2);
     prout(_("Your score --"));
@@ -358,6 +357,9 @@ void score(void)
     if (game.state.nplankl)
        prout(_("%6d planets destroyed by your action   %5d"),
              game.state.nplankl, -10*game.state.nplankl);
+    if ((game.options & OPTION_WORLDS) && game.state.nworldkl)
+       prout(_("%6d inhabited planets destroyed by your action   %5d"),
+             game.state.nplankl, -300*game.state.nworldkl);
     if (game.state.basekl)
        prout(_("%6d bases destroyed by your action     %5d"),
              game.state.basekl, -100*game.state.basekl);
@@ -367,6 +369,9 @@ void score(void)
     if (game.casual)
        prout(_("%6d casualties incurred                %5d"),
              game.casual, -game.casual);
+    if (game.abandoned)
+       prout(_("%6d crew abandoned in space            %5d"),
+             game.abandoned, -3*game.abandoned);
     if (klship)
        prout(_("%6d ship(s) lost or destroyed          %5d"),
              klship, -100*klship);