merge the autotools branch
[super-star-trek.git] / finish.c
diff --git a/finish.c b/finish.c
deleted file mode 100644 (file)
index c0d3569..0000000
--- a/finish.c
+++ /dev/null
@@ -1,453 +0,0 @@
-#include "sst.h"
-#include <string.h>
-#include <time.h>
-
-void dstrct() 
-{
-    /* Finish with a BANG! */
-    chew();
-    if (game.damage[DCOMPTR] != 0.0) {
-       prout("Computer damaged; cannot execute destruct sequence.");
-       return;
-    }
-    prouts("---WORKING---"); skip(1);
-    prouts("SELF-DESTRUCT-SEQUENCE-ACTIVATED"); skip(1);
-    prouts("   10"); skip(1);
-    prouts("       9"); skip(1);
-    prouts("          8"); skip(1);
-    prouts("             7"); skip(1);
-    prouts("                6"); skip(1);
-    skip(1);
-    prout("ENTER-CORRECT-PASSWORD-TO-CONTINUE-");
-    skip(1);
-    prout("SELF-DESTRUCT-SEQUENCE-OTHERWISE-");
-    skip(1);
-    prout("SELF-DESTRUCT-SEQUENCE-WILL-BE-ABORTED");
-    skip(1);
-    scan();
-    chew();
-    if (strcmp(game.passwd, citem) != 0) {
-       prouts("PASSWORD-REJECTED;"); skip(1);
-       prouts("CONTINUITY-EFFECTED");
-       skip(2);
-       return;
-    }
-    prouts("PASSWORD-ACCEPTED"); skip(1);
-    prouts("                   5"); skip(1);
-    prouts("                      4"); skip(1);
-    prouts("                         3"); skip(1);
-    prouts("                            2"); skip(1);
-    prouts("                              1"); skip(1);
-    if (Rand() < 0.15) {
-       prouts("GOODBYE-CRUEL-WORLD");
-       skip(1);
-    }
-    kaboom();
-}
-
-void kaboom(void) 
-{
-    stars();
-    if (ship==IHE) prouts("***");
-    prouts("********* Entropy of ");
-    crmshp();
-    prouts(" maximized *********");
-    skip(1);
-    stars();
-    skip(1);
-    if (nenhere != 0) {
-       double whammo = 25.0 * energy;
-       int l=1;
-       while (l <= nenhere) {
-           if (game.kpower[l]*game.kdist[l] <= whammo) 
-               deadkl(game.kx[l],game.ky[l], game.quad[game.kx[l]][game.ky[l]], game.kx[l], game.ky[l]);
-           l++;
-       }
-    }
-    finish(FDILITHIUM);
-}
-                               
-
-void finish(FINTYPE ifin) 
-{
-    int igotit = 0;
-    alldone = 1;
-    skip(3);
-    prout("It is stardate %.1f.", game.state.date);
-    skip(1);
-    switch (ifin) {
-    case FWON: // Game has been won
-       if (game.state.nromrem != 0)
-           prout("The remaining %d Romulans surrender to Starfleet Command.",
-                 game.state.nromrem);
-
-       prout("You have smashed the Klingon invasion fleet and saved");
-       prout("the Federation.");
-       gamewon=1;
-       if (alive) {
-           double badpt;
-           badpt = 5.0*game.state.starkl + casual + 10.0*game.state.nplankl +
-               45.*nhelp+100.*game.state.basekl;
-           if (ship == IHF) badpt += 100.0;
-           else if (ship == 0) badpt += 200.0;
-           if (badpt < 100.0) badpt = 0.0;     // Close enough!
-           if (game.state.date-indate < 5.0 ||
-               // killsPerDate >= RateMax
-               KLINGKILLED/(game.state.date-indate) >=
-               0.1*skill*(skill+1.0) + 0.1 + 0.008*badpt) {
-               skip(1);
-               prout("In fact, you have done so well that Starfleet Command");
-               switch (skill) {
-               case SKILL_NOVICE:
-                   prout("promotes you one step in rank from \"Novice\" to \"Fair\".");
-                   break;
-               case SKILL_FAIR:
-                   prout("promotes you one step in rank from \"Fair\" to \"Good\".");
-                   break;
-               case SKILL_GOOD:
-                   prout("promotes you one step in rank from \"Good\" to \"Expert\".");
-                   break;
-               case SKILL_EXPERT:
-                   prout("promotes you to Commodore Emeritus.");
-                   skip(1);
-                   prout("Now that you think you're really good, try playing");
-                   prout("the \"Emeritus\" game. It will splatter your ego.");
-                   break;
-               case SKILL_EMERITUS:
-                   skip(1);
-                   proutn("Computer-  ");
-                   prouts("ERROR-ERROR-ERROR-ERROR");
-                   skip(2);
-                   prouts("  YOUR-SKILL-HAS-EXCEEDED-THE-CAPACITY-OF-THIS-PROGRAM");
-                   skip(1);
-                   prouts("  THIS-PROGRAM-MUST-SURVIVE");
-                   skip(1);
-                   prouts("  THIS-PROGRAM-MUST-SURVIVE");
-                   skip(1);
-                   prouts("  THIS-PROGRAM-MUST-SURVIVE");
-                   skip(1);
-                   prouts("  THIS-PROGRAM-MUST?- MUST ? - SUR? ? -?  VI");
-                   skip(2);
-                   prout("Now you can retire and write your own Star Trek game!");
-                   skip(1);
-                   break;
-               }
-               if (skill >= SKILL_EXPERT) {
-                   if (thawed
-#ifdef DEBUG
-                       && !idebug
-#endif
-                       )
-                       prout("You cannot get a citation, so...");
-                   else {
-                       proutn("Do you want your Commodore Emeritus Citation printed? ");
-                       chew();
-                       if (ja()) {
-                           igotit = 1;
-                       }
-                   }
-               }
-           }
-           // Only grant long life if alive (original didn't!)
-           skip(1);
-           prout("LIVE LONG AND PROSPER.");
-       }
-       score();
-       if (igotit != 0) plaque();
-       return;
-    case FDEPLETE: // Federation Resources Depleted
-       prout("Your time has run out and the Federation has been");
-       prout("conquered.  Your starship is now Klingon property,");
-       prout("and you are put on trial as a war criminal.  On the");
-       proutn("basis of your record, you are ");
-       if (KLINGREM*3.0 > INKLINGTOT) {
-           prout("aquitted.");
-           skip(1);
-           prout("LIVE LONG AND PROSPER.");
-       }
-       else {
-           prout("found guilty and");
-           prout("sentenced to death by slow torture.");
-           alive = 0;
-       }
-       score();
-       return;
-    case FLIFESUP:
-       prout("Your life support reserves have run out, and");
-       prout("you die of thirst, starvation, and asphyxiation.");
-       prout("Your starship is a derelict in space.");
-       break;
-    case FNRG:
-       prout("Your energy supply is exhausted.");
-       skip(1);
-       prout("Your starship is a derelict in space.");
-       break;
-    case FBATTLE:
-       proutn("The ");
-       crmshp();
-       prout("has been destroyed in battle.");
-       skip(1);
-       prout("Dulce et decorum est pro patria mori.");
-       break;
-    case FNEG3:
-       prout("You have made three attempts to cross the negative energy");
-       prout("barrier which surrounds the galaxy.");
-       skip(1);
-       prout("Your navigation is abominable.");
-       score();
-       return;
-    case FNOVA:
-       prout("Your starship has been destroyed by a nova.");
-       prout("That was a great shot.");
-       skip(1);
-       break;
-    case FSNOVAED:
-       proutn("The ");
-       crmshp();
-       prout(" has been fried by a supernova.");
-       prout("...Not even cinders remain...");
-       break;
-    case FABANDN:
-       prout("You have been captured by the Klingons. If you still");
-       prout("had a starbase to be returned to, you would have been");
-       prout("repatriated and given another chance. Since you have");
-       prout("no starbases, you will be mercilessly tortured to death.");
-       break;
-    case FDILITHIUM:
-       prout("Your starship is now an expanding cloud of subatomic particles");
-       break;
-    case FMATERIALIZE:
-       prout("Starbase was unable to re-materialize your starship.");
-       prout("Sic transit gloria muntdi");
-       break;
-    case FPHASER:
-       proutn("The ");
-       crmshp();
-       prout(" has been cremated by its own phasers.");
-       break;
-    case FLOST:
-       prout("You and your landing party have been");
-       prout("converted to energy, disipating through space.");
-       break;
-    case FMINING:
-       prout("You are left with your landing party on");
-       prout("a wild jungle planet inhabited by primitive cannibals.");
-       skip(1);
-       prout("They are very fond of \"Captain Kirk\" soup.");
-       skip(1);
-       proutn("Without your leadership, the ");
-       crmshp();
-       prout(" is destroyed.");
-       break;
-    case FDPLANET:
-       prout("You and your mining party perish.");
-       skip(1);
-       prout("That was a great shot.");
-       skip(1);
-       break;
-    case FSSC:
-       prout("The Galileo is instantly annihilated by the supernova.");
-       // no break;
-    case FPNOVA:
-       prout("You and your mining party are atomized.");
-       skip(1);
-       proutn("Mr. Spock takes command of the ");
-       crmshp();
-       prout(" and");
-       prout("joins the Romulans, reigning terror on the Federation.");
-       break;
-    case FSTRACTOR:
-       prout("The shuttle craft Galileo is also caught,");
-       prout("and breaks up under the strain.");
-       skip(1);
-       prout("Your debris is scattered for millions of miles.");
-       proutn("Without your leadership, the ");
-       crmshp();
-       prout(" is destroyed.");
-       break;
-    case FDRAY:
-       prout("The mutants attack and kill Spock.");
-       prout("Your ship is captured by Klingons, and");
-       prout("your crew is put on display in a Klingon zoo.");
-       break;
-    case FTRIBBLE:
-       prout("Tribbles consume all remaining water,");
-       prout("food, and oxygen on your ship.");
-       skip(1);
-       prout("You die of thirst, starvation, and asphyxiation.");
-       prout("Your starship is a derelict in space.");
-       break;
-    case FHOLE:
-       prout("Your ship is drawn to the center of the black hole.");
-       prout("You are crushed into extremely dense matter.");
-       break;
-    }
-    if (ship==IHF) ship= 0;
-    else if (ship == IHE) ship = IHF;
-    alive = 0;
-    if (KLINGREM != 0) {
-       double goodies = game.state.remres/inresor;
-       double baddies = (game.state.remkl + 2.0*game.state.remcom)/(inkling+2.0*incom);
-       if (goodies/baddies >= 1.0+0.5*Rand()) {
-           prout("As a result of your actions, a treaty with the Klingon");
-           prout("Empire has been signed. The terms of the treaty are");
-           if (goodies/baddies >= 3.0+Rand()) {
-               prout("favorable to the Federation.");
-               skip(1);
-               prout("Congratulations!");
-           }
-           else
-               prout("highly unfavorable to the Federation.");
-       }
-       else
-           prout("The Federation will be destroyed.");
-    }
-    else {
-       prout("Since you took the last Klingon with you, you are a");
-       prout("martyr and a hero. Someday maybe they'll erect a");
-       prout("statue in your memory. Rest in peace, and try not");
-       prout("to think about pigeons.");
-       gamewon = 1;
-    }
-    score();
-}
-
-void score(void) 
-{
-    double timused = game.state.date - indate;
-    int ithperd, iwon, klship;
-
-    iskill = skill;
-    if ((timused == 0 || KLINGREM != 0) && timused < 5.0) timused = 5.0;
-    perdate = KLINGKILLED/timused;
-    ithperd = 500*perdate + 0.5;
-    iwon = 0;
-    if (gamewon) iwon = 100*skill;
-    if (ship == IHE) klship = 0;
-    else if (ship == IHF) klship = 1;
-    else klship = 2;
-    if (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*nhelp -5*game.state.starkl - casual
-       + 20*NKILLROM + 200*NKILLSC - 10*game.state.nplankl + game.state.nromrem;
-    if (alive == 0) iscore -= 200;
-    skip(2);
-    prout("Your score --");
-    if (NKILLROM)
-       prout("%6d Romulans destroyed                 %5d",
-             NKILLROM,20*NKILLROM);
-    if (game.state.nromrem)
-       prout("%6d Romulans captured                  %5d",
-             game.state.nromrem, game.state.nromrem);
-    if (NKILLK)
-       prout("%6d ordinary Klingons destroyed        %5d",
-             NKILLK, 10*NKILLK);
-    if (NKILLC)
-       prout("%6d Klingon commanders destroyed       %5d",
-             NKILLC, 50*NKILLC);
-    if (NKILLSC)
-       prout("%6d Super-Commander destroyed          %5d",
-             NKILLSC, 200*NKILLSC);
-    if (ithperd)
-       prout("%6.2f Klingons per stardate              %5d",
-             perdate, ithperd);
-    if (game.state.starkl)
-       prout("%6d stars destroyed by your action     %5d",
-             game.state.starkl, -5*game.state.starkl);
-    if (game.state.nplankl)
-       prout("%6d planets destroyed by your action   %5d",
-             game.state.nplankl, -10*game.state.nplankl);
-    if (game.state.basekl)
-       prout("%6d bases destroyed by your action     %5d",
-             game.state.basekl, -100*game.state.basekl);
-    if (nhelp)
-       prout("%6d calls for help from starbase       %5d",
-             nhelp, -45*nhelp);
-    if (casual)
-       prout("%6d casualties incurred                %5d",
-             casual, -casual);
-    if (klship)
-       prout("%6d ship(s) lost or destroyed          %5d",
-             klship, -100*klship);
-    if (alive==0)
-       prout("Penalty for getting yourself killed        -200");
-    if (gamewon) {
-       proutn("Bonus for winning ");
-       switch (skill) {
-       case SKILL_NOVICE:   proutn("Novice game  "); break;
-       case SKILL_FAIR:     proutn("Fair game    "); break;
-       case SKILL_GOOD:     proutn("Good game    "); break;
-       case SKILL_EXPERT:   proutn("Expert game  "); break;
-       case SKILL_EMERITUS: proutn("Emeritus game"); break;
-       }
-       prout("           %5d", iwon);
-    }
-    skip(1);
-    prout("TOTAL SCORE                               %5d", iscore);
-}
-
-void plaque(void) {
-       FILE *fp=NULL;
-       time_t t;
-       char *timestring;
-       int nskip;
-       char winner[128];
-
-       skip(2);
-       
-       while (fp == NULL) {
-                proutn("File or device name for your plaque: ");
-                cgetline(winner, sizeof(winner));
-               fp = fopen(winner, "w");
-               if (fp==NULL) {
-                        prout("Invalid name.");
-               }
-       }
-
-        proutn("Enter name to go on plaque (up to 30 characters): ");
-        cgetline(winner, sizeof(winner));
-       /* The 38 below must be 64 for 132-column paper */
-       nskip = 38 - strlen(winner)/2;
-
-       fprintf(fp,"\n\n\n\n");
-       /* --------DRAW ENTERPRISE PICTURE. */
-        fprintf(fp, "                                       EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n" );
-       fprintf(fp, "                                      EEE                      E  : :                                         :  E\n" );
-       fprintf(fp, "                                    EE   EEE                   E  : :                   NCC-1701              :  E\n");
-        fprintf(fp, "EEEEEEEEEEEEEEEE        EEEEEEEEEEEEEEE  : :                              : E\n");
-        fprintf(fp, " E                                     EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n");
-       fprintf(fp, "                      EEEEEEEEE               EEEEEEEEEEEEE                 E  E\n");
-       fprintf(fp, "                               EEEEEEE   EEEEE    E          E              E  E\n");
-       fprintf(fp, "                                      EEE           E          E            E  E\n");
-       fprintf(fp, "                                                       E         E          E  E\n");
-       fprintf(fp, "                                                         EEEEEEEEEEEEE      E  E\n");
-       fprintf(fp, "                                                      EEE :           EEEEEEE  EEEEEEEE\n");
-       fprintf(fp, "                                                    :E    :                 EEEE       E\n");
-       fprintf(fp, "                                                   .-E   -:-----                       E\n");
-       fprintf(fp, "                                                    :E    :                            E\n");
-       fprintf(fp, "                                                      EE  :                    EEEEEEEE\n");
-       fprintf(fp, "                                                       EEEEEEEEEEEEEEEEEEEEEEE\n");
-       fprintf(fp, "\n\n\n");
-       fprintf(fp, "                                                       U. S. S. ENTERPRISE\n");
-       fprintf(fp, "\n\n\n\n");
-       fprintf(fp, "                                  For demonstrating outstanding ability as a starship captain\n");
-       fprintf(fp, "\n");
-       fprintf(fp, "                                                Starfleet Command bestows to you\n");
-       fprintf(fp, "\n");
-       fprintf(fp,"%*s%s\n\n", nskip, "", winner);
-       fprintf(fp, "                                                           the rank of\n\n");
-       fprintf(fp, "                                                       \"Commodore Emeritus\"\n\n");
-       fprintf(fp, "                                                          ");
-       switch (iskill) {
-               case SKILL_EXPERT: fprintf(fp," Expert level\n\n"); break;
-               case SKILL_EMERITUS: fprintf(fp,"Emeritus level\n\n"); break;
-               default: fprintf(fp," Cheat level\n\n"); break;
-       }
-       t = time(NULL);
-       timestring = ctime(&t);
-       fprintf(fp, "                                                 This day of %.6s %.4s, %.8s\n\n",
-                       timestring+4, timestring+20, timestring+11);
-       fprintf(fp,"                                                        Your score:  %d\n\n", iscore);
-       fprintf(fp,"                                                    Klingons per stardate:  %.2f\n", perdate);
-       fclose(fp);
-}