More magic-number chasing.
[super-star-trek.git] / setup.c
diff --git a/setup.c b/setup.c
index ca00504d5f424c772a7b2e91159b0a05a1622b89..fb12ed86bc1e445f30e6971767a593aeb3a66360 100644 (file)
--- a/setup.c
+++ b/setup.c
@@ -1,8 +1,5 @@
 #include <time.h>
 #include <sys/stat.h>
 #include <time.h>
 #include <sys/stat.h>
-#ifdef SERGEEV
-#include <conio.h>
-#endif /* SERGEEV */
 #include "sst.h"
 
 #ifdef __linux__
 #include "sst.h"
 
 #ifdef __linux__
@@ -17,10 +14,10 @@ void prelim(void) {
        skip(2);
        prout("-SUPER- STAR TREK");
        skip(1);
        skip(2);
        prout("-SUPER- STAR TREK");
        skip(1);
-#ifndef SERGEEV
+#ifdef __HISTORICAL__
        prout("Latest update-21 Sept 78");
        skip(1);
        prout("Latest update-21 Sept 78");
        skip(1);
-#endif /* SERGEEV */
+#endif /* __HISTORICAL__ */
 }
 
 void freeze(int boss) {
 }
 
 void freeze(int boss) {
@@ -157,16 +154,16 @@ void abandn(void) {
                for (;;) {
                        /* position next to base by trial and error */
                        game.quad[sectx][secty] = IHDOT;
                for (;;) {
                        /* position next to base by trial and error */
                        game.quad[sectx][secty] = IHDOT;
-                       for (l = 1; l <= 10; l++) {
+                       for (l = 1; l <= QUADSIZE; l++) {
                                sectx = 3.0*Rand() - 1.0 + basex;
                                secty = 3.0*Rand() - 1.0 + basey;
                                sectx = 3.0*Rand() - 1.0 + basex;
                                secty = 3.0*Rand() - 1.0 + basey;
-                               if (sectx >= 1 && sectx <= 10 &&
-                                       secty >= 1 && secty <= 10 &&
+                               if (sectx >= 1 && sectx <= QUADSIZE &&
+                                       secty >= 1 && secty <= QUADSIZE &&
                                        game.quad[sectx][secty] == IHDOT) break;
                        }
                                        game.quad[sectx][secty] == IHDOT) break;
                        }
-                       if (l < 11) break; /* found a spot */
-                       sectx=5;
-                       secty=5;
+                       if (l < QUADSIZE+1) break; /* found a spot */
+                       sectx=QUADSIZE/2;
+                       secty=QUADSIZE/2;
                        newqad(1);
                }
        }
                        newqad(1);
                }
        }
@@ -225,8 +222,8 @@ void setup(int needprompt) {
        landed = -1;
        alive = 1;
        docfac = 0.25;
        landed = -1;
        alive = 1;
        docfac = 0.25;
-       for (i = 1; i <= 8; i++)
-               for (j = 1; j <= 8; j++) game.state.newstuf[i][j] = game.starch[i][j] = 0;
+       for (i = 1; i <= GALSIZE; i++)
+               for (j = 1; j <= GALSIZE; j++) game.state.newstuf[i][j] = game.starch[i][j] = 0;
        // Initialize times for extraneous events
        game.future[FSNOVA] = game.state.date + expran(0.5 * intime);
        game.future[FTBEAM] = game.state.date + expran(1.5 * (intime / game.state.remcom));
        // Initialize times for extraneous events
        game.future[FSNOVA] = game.state.date + expran(0.5 * intime);
        game.future[FTBEAM] = game.state.date + expran(1.5 * (intime / game.state.remcom));
@@ -240,8 +237,8 @@ void setup(int needprompt) {
        stdamtim = 1e30;
        // Put stars in the galaxy
        instar = 0;
        stdamtim = 1e30;
        // Put stars in the galaxy
        instar = 0;
-       for (i=1; i<=8; i++)
-               for (j=1; j<=8; j++) {
+       for (i=1; i<=GALSIZE; i++)
+               for (j=1; j<=GALSIZE; j++) {
                        int k = Rand()*9.0 + 1.0;
                        instar += k;
                        game.state.galaxy[i][j] = k;
                        int k = Rand()*9.0 + 1.0;
                        instar += k;
                        game.state.galaxy[i][j] = k;
@@ -251,12 +248,12 @@ void setup(int needprompt) {
                int contflag;
                do {
                        do iran8(&ix, &iy);
                int contflag;
                do {
                        do iran8(&ix, &iy);
-                       while (game.state.galaxy[ix][iy] >= 10);
+                       while (game.state.galaxy[ix][iy] >= BASE_PLACE);
                        contflag = FALSE;
                        for (j = i-1; j > 0; j--) {
                                /* Improved placement algorithm to spread out bases */
                                double distq = square(ix-game.state.baseqx[j]) + square(iy-game.state.baseqy[j]);
                        contflag = FALSE;
                        for (j = i-1; j > 0; j--) {
                                /* Improved placement algorithm to spread out bases */
                                double distq = square(ix-game.state.baseqx[j]) + square(iy-game.state.baseqy[j]);
-                               if (distq < 6.0*(6-inbase) && Rand() < 0.75) {
+                               if (distq < 6.0*(BASEMAX-inbase) && Rand() < 0.75) {
                                        contflag = TRUE;
 #ifdef DEBUG
                                        proutn("DEBUG: Abandoning base #%d at %d-%d\n", i, ix, iy);
                                        contflag = TRUE;
 #ifdef DEBUG
                                        proutn("DEBUG: Abandoning base #%d at %d-%d\n", i, ix, iy);
@@ -264,7 +261,7 @@ void setup(int needprompt) {
                                        break;
                                }
 #ifdef DEBUG
                                        break;
                                }
 #ifdef DEBUG
-                               else if (distq < 6.0 * (6-inbase)) {
+                               else if (distq < 6.0 * (BASEMAX-inbase)) {
                                        proutn("DEBUG: saving base #%d, close to #%d\n", i, j);
                                }
 #endif
                                        proutn("DEBUG: saving base #%d, close to #%d\n", i, j);
                                }
 #endif
@@ -274,7 +271,7 @@ void setup(int needprompt) {
                game.state.baseqx[i] = ix;
                game.state.baseqy[i] = iy;
                game.starch[ix][iy] = -1;
                game.state.baseqx[i] = ix;
                game.state.baseqy[i] = iy;
                game.starch[ix][iy] = -1;
-               game.state.galaxy[ix][iy] += 10;
+               game.state.galaxy[ix][iy] += BASE_PLACE;
        }
        // Position ordinary Klingon Battle Cruisers
        krem = inkling - incom - game.state.nscrem;
        }
        // Position ordinary Klingon Battle Cruisers
        krem = inkling - incom - game.state.nscrem;
@@ -287,7 +284,7 @@ void setup(int needprompt) {
                krem -= klump;
                klump *= 100;
                do iran8(&ix, &iy);
                krem -= klump;
                klump *= 100;
                do iran8(&ix, &iy);
-               while (game.state.galaxy[ix][iy] + klump >= 1000);
+               while (game.state.galaxy[ix][iy] + klump >= SUPERNOVA_PLACE);
                game.state.galaxy[ix][iy] += klump;
        } while (krem > 0);
        // Position Klingon Commander Ships
                game.state.galaxy[ix][iy] += klump;
        } while (krem > 0);
        // Position Klingon Commander Ships
@@ -313,7 +310,7 @@ void setup(int needprompt) {
                        for (j = 1; j < i; j++)
                                if (game.state.cx[j]==ix && game.state.cy[j]==iy) break;
                } while (j < i);
                        for (j = 1; j < i; j++)
                                if (game.state.cx[j]==ix && game.state.cy[j]==iy) break;
                } while (j < i);
-               game.state.galaxy[ix][iy] += 100;
+               game.state.galaxy[ix][iy] += ENEMY_PLACE;
                game.state.cx[i] = ix;
                game.state.cy[i] = iy;
        }
                game.state.cx[i] = ix;
                game.state.cy[i] = iy;
        }
@@ -331,7 +328,7 @@ void setup(int needprompt) {
        // Locate Romulans
        for (i = 1; i <= game.state.nromrem; i++) {
                iran8(&ix, &iy);
        // Locate Romulans
        for (i = 1; i <= game.state.nromrem; i++) {
                iran8(&ix, &iy);
-               game.state.newstuf[ix][iy] += 10;
+               game.state.newstuf[ix][iy] += ROMULAN_PLACE;
        }
        // Locate the Super Commander
        if (game.state.nscrem > 0) {
        }
        // Locate the Super Commander
        if (game.state.nscrem > 0) {
@@ -339,7 +336,7 @@ void setup(int needprompt) {
                while (game.state.galaxy[ix][iy] >= 900);
                game.state.isx = ix;
                game.state.isy = iy;
                while (game.state.galaxy[ix][iy] >= 900);
                game.state.isx = ix;
                game.state.isy = iy;
-               game.state.galaxy[ix][iy] += 100;
+               game.state.galaxy[ix][iy] += ENEMY_PLACE;
        }
        // Place thing (in tournament game, thingx == -1, don't want one!)
        if (thingx != -1) {
        }
        // Place thing (in tournament game, thingx == -1, don't want one!)
        if (thingx != -1) {
@@ -387,9 +384,7 @@ void setup(int needprompt) {
        skip(2);
        prout("Good Luck!");
        if (game.state.nscrem) prout("  YOU'LL NEED IT.");
        skip(2);
        prout("Good Luck!");
        if (game.state.nscrem) prout("  YOU'LL NEED IT.");
-#ifdef SERGEEV
-        getche();
-#endif /* SERGEEV */
+        waitfor();
        newqad(0);
         if (nenhere-iqhere-ithere) shldup=1.0;
        if (neutz) attack(0);   // bad luck to start in a Romulan Neutral Zone
        newqad(0);
         if (nenhere-iqhere-ithere) shldup=1.0;
        if (neutz) attack(0);   // bad luck to start in a Romulan Neutral Zone
@@ -400,9 +395,6 @@ void randomize(void) {
 }
 
 int choose(int needprompt) {
 }
 
 int choose(int needprompt) {
-#ifdef SERGEEV
-        int i;
-#endif /* SERGEEV */
         while (TRUE) {
        tourn = 0;
        thawed = 0;
         while (TRUE) {
        tourn = 0;
        thawed = 0;
@@ -425,24 +417,13 @@ int choose(int needprompt) {
                        srand((unsigned int)(int)aaitem);
                        break;
                }
                        srand((unsigned int)(int)aaitem);
                        break;
                }
-#ifdef SERGEEV
-                if (isit("saved")) {
+               if (isit("saved") || isit("frozen")) {
                         if (thaw()) continue;
                         if (thaw()) continue;
-#else
-               if (isit("frozen")) {
-                       thaw();
-#endif /* SERGEEV */
                        chew();
                        chew();
-#ifndef SERGEEV
                        if (*game.passwd==0) continue;
                        if (*game.passwd==0) continue;
-                       randomize();
-                       Rand(); Rand(); Rand(); Rand();
-#endif
                        if (!alldone) thawed = 1; // No plaque if not finished
                         report();
                        if (!alldone) thawed = 1; // No plaque if not finished
                         report();
-#ifdef SERGEEV
-                        getche();
-#endif /* SERGEEV */
+                        waitfor();
                        return TRUE;
                }
                 if (isit("regular")) break;
                        return TRUE;
                }
                 if (isit("regular")) break;
@@ -473,18 +454,7 @@ int choose(int needprompt) {
                        else if (skill == 0) proutn("Are you a Novice, Fair, Good, Expert, or Emeritus player? ");
                }
        }
                        else if (skill == 0) proutn("Are you a Novice, Fair, Good, Expert, or Emeritus player? ");
                }
        }
-#ifndef SERGEEV
-       while (TRUE) {
-               scan();
-               strcpy(game.passwd, citem);
-               chew();
-               if (*game.passwd != 0) break;
-               proutn("Please type in a secret password-");
-       }
-#else
-        for(i=0;i<3;i++) game.passwd[i]=(char)(97+(int)(Rand()*25));
-        game.passwd[3]=0;
-#endif /* SERGEEV */
+       setpassword();
 #ifdef DEBUG
        if (strcmp(game.passwd, "debug")==0) idebug = 1;
 #endif
 #ifdef DEBUG
        if (strcmp(game.passwd, "debug")==0) idebug = 1;
 #endif
@@ -520,7 +490,7 @@ void dropin(int iquad, int *ix, int *iy) {
 void newcnd(void) {
        condit = IHGREEN;
        if (energy < 1000.0) condit = IHYELLOW;
 void newcnd(void) {
        condit = IHGREEN;
        if (energy < 1000.0) condit = IHYELLOW;
-       if (game.state.galaxy[quadx][quady] > 99 || game.state.newstuf[quadx][quady] > 9)
+       if (game.state.galaxy[quadx][quady] >= ENEMY_PLACE || game.state.newstuf[quadx][quady] > 9)
                condit = IHRED;
         if (!alive) condit=IHDEAD;
 }
                condit = IHRED;
         if (!alive) condit=IHDEAD;
 }
@@ -555,23 +525,23 @@ void newqad(int shutup) {
                ientesc = 1;
        }
        // Clear quadrant
                ientesc = 1;
        }
        // Clear quadrant
-       for (i=1; i <= 10; i++)
-               for (j=1; j <= 10; j++) game.quad[i][j] = IHDOT;
+       for (i=1; i <= QUADSIZE; i++)
+               for (j=1; j <= QUADSIZE; j++) game.quad[i][j] = IHDOT;
        // cope with supernova
        if (quadnum > 999) {
                return;
        }
        // cope with supernova
        if (quadnum > 999) {
                return;
        }
-       klhere = quadnum/100;
-       irhere = newnum/10;
+       klhere = quadnum/ENEMY_PLACE;
+       irhere = newnum/ROMULAN_PLACE;
        nplan = newnum%10;
        nenhere = klhere + irhere;
 
        // Position Starship
        game.quad[sectx][secty] = ship;
 
        nplan = newnum%10;
        nenhere = klhere + irhere;
 
        // Position Starship
        game.quad[sectx][secty] = ship;
 
-       if (quadnum >= 100) {
+       if (quadnum >= ENEMY_PLACE) {
                // Position ordinary Klingons
                // Position ordinary Klingons
-               quadnum -= 100*klhere;
+               quadnum -= ENEMY_PLACE*klhere;
                for (i = 1; i <= klhere; i++) {
                        dropin(IHK, &ix, &iy);
                        game.kx[i] = ix;
                for (i = 1; i <= klhere; i++) {
                        dropin(IHK, &ix, &iy);
                        game.kx[i] = ix;
@@ -606,8 +576,8 @@ void newqad(int shutup) {
                game.kpower[i] = Rand()*400.0 + 450.0 + 50.0*skill;
        }
        // If quadrant needs a starbase, put it in
                game.kpower[i] = Rand()*400.0 + 450.0 + 50.0*skill;
        }
        // If quadrant needs a starbase, put it in
-       if (quadnum >= 10) {
-               quadnum -= 10;
+       if (quadnum >= BASE_PLACE) {
+               quadnum -= BASE_PLACE;
                dropin(IHB, &basex, &basey);
        }
        
                dropin(IHB, &basex, &basey);
        }
        
@@ -667,8 +637,8 @@ void newqad(int shutup) {
 #endif
                 ) {
                 do {
 #endif
                 ) {
                 do {
-                        ithx = Rand() > 0.5 ? 10 : 1;
-                        ithy = Rand() > 0.5 ? 10 : 1;
+                        ithx = Rand() > 0.5 ? QUADSIZE : 1;
+                        ithy = Rand() > 0.5 ? QUADSIZE : 1;
                 } while (game.quad[ithx][ithy] != IHDOT);
                 game.quad[ithx][ithy] = IHT;
                 ithere = 1;
                 } while (game.quad[ithx][ithy] != IHDOT);
                 game.quad[ithx][ithy] = IHT;
                 ithere = 1;
@@ -680,9 +650,9 @@ void newqad(int shutup) {
                 game.kpower[nenhere] = Rand()*400.0 +100.0 +25.0*skill;
                 /* Reserve unocupied corners */
                 if (game.quad[1][1]==IHDOT) game.quad[1][1] = 'X';
                 game.kpower[nenhere] = Rand()*400.0 +100.0 +25.0*skill;
                 /* Reserve unocupied corners */
                 if (game.quad[1][1]==IHDOT) game.quad[1][1] = 'X';
-                if (game.quad[1][10]==IHDOT) game.quad[1][10] = 'X';
-                if (game.quad[10][1]==IHDOT) game.quad[10][1] = 'X';
-                if (game.quad[10][10]==IHDOT) game.quad[10][10] = 'X';
+                if (game.quad[1][QUADSIZE]==IHDOT) game.quad[1][QUADSIZE] = 'X';
+                if (game.quad[QUADSIZE][1]==IHDOT) game.quad[QUADSIZE][1] = 'X';
+                if (game.quad[QUADSIZE][QUADSIZE]==IHDOT) game.quad[QUADSIZE][QUADSIZE] = 'X';
         }
         sortkl();
 
         }
         sortkl();
 
@@ -693,9 +663,9 @@ void newqad(int shutup) {
        // Take out X's in corners if Tholian present
        if (ithere) {
                if (game.quad[1][1]=='X') game.quad[1][1] = IHDOT;
        // Take out X's in corners if Tholian present
        if (ithere) {
                if (game.quad[1][1]=='X') game.quad[1][1] = IHDOT;
-               if (game.quad[1][10]=='X') game.quad[1][10] = IHDOT;
-               if (game.quad[10][1]=='X') game.quad[10][1] = IHDOT;
-               if (game.quad[10][10]=='X') game.quad[10][10] = IHDOT;
+               if (game.quad[1][QUADSIZE]=='X') game.quad[1][QUADSIZE] = IHDOT;
+               if (game.quad[QUADSIZE][1]=='X') game.quad[QUADSIZE][1] = IHDOT;
+               if (game.quad[QUADSIZE][QUADSIZE]=='X') game.quad[QUADSIZE][QUADSIZE] = IHDOT;
        }               
 }
 
        }               
 }