Fix several minor bugs reported by Stas Sergeev.
[super-star-trek.git] / sst.c
diff --git a/sst.c b/sst.c
index 65c79ac6c35e48618e8ae03acf5af0b9779bcf58..3d394c67b4da2097edf5f027d119589227e3c5e3 100644 (file)
--- a/sst.c
+++ b/sst.c
@@ -114,9 +114,7 @@ Eric Raymond's changes:
 
    2. Status report now indicates when dilithium crystals are on board.
 
-   3. Can now report starbases left in scrscan.
-
-   4. Per Dave Matuszek's remarks, Thingy state is not saved across games.
+   3. Per Dave Matuszek's remarks, Thingy state is not saved across games.
    */
 
 /* the input queue */
@@ -197,7 +195,7 @@ commands[] = {
        {"DEBUG",       DEBUGCMD,       0},
 #define MAYDAY 32
        {"MAYDAY",      MAYDAY,         0},
-       {"SOS",         MAYDAY,         0},
+       //{"SOS",               MAYDAY,         0},
        {"CALL",        MAYDAY,         0},
 #define QUIT   33
        {"QUIT",        QUIT,           0},
@@ -206,12 +204,13 @@ commands[] = {
 };
 
 #define NUMCOMMANDS    sizeof(commands)/sizeof(commands[0])
+#define ACCEPT(i)      (!commands[i].option || (commands[i].option & game.options))
 
 static void listCommands(void) {
     int i, k = 0;
     proutn("LEGAL COMMANDS ARE:");
     for (i = 0; i < NUMCOMMANDS; i++) {
-       if (commands[i].option && !(commands[i].option & game.options))
+       if (!ACCEPT(i))
            continue;
        if (k % 5 == 0)
            skip(1);
@@ -239,7 +238,7 @@ static void helpme(void)
        setwnd(message_window);
        if (key == IHEOL) return;
        for (i = 0; i < NUMCOMMANDS; i++) {
-           if (strcasecmp(commands[i].name, citem)==0) {
+           if (ACCEPT(i) && strcasecmp(commands[i].name, citem)==0) {
                i = commands[i].value;
                break;
            }
@@ -327,14 +326,14 @@ static void makemoves(void)
            setwnd(message_window);
            clrscr();
            for (i=0; i < ABANDON; i++)
-               if (isit(commands[i].name)) {
+               if (ACCEPT(i) && isit(commands[i].name)) {
                    v = commands[i].value;
                    break;
                }
            if (i < ABANDON && (!commands[i].option || (commands[i].option & game.options))) 
                break;
            for (; i < NUMCOMMANDS; i++)
-               if (strcasecmp(commands[i].name, citem) == 0) {
+               if (ACCEPT(i) && strcasecmp(commands[i].name, citem) == 0) {
                    v = commands[i].value;
                    break;
                }
@@ -398,7 +397,7 @@ static void makemoves(void)
            score();
            break;
        case SENSORS:                   // sensors
-           sensor(TRUE);
+           sensor();
            break;
        case ORBIT:                     // orbit
            orbit();
@@ -485,14 +484,14 @@ static void makemoves(void)
                events();
                if (alldone) break;             // Events did us in
            }
-           if (game.state.galaxy[quadx][quady] == SUPERNOVA_PLACE) { // Galaxy went Nova!
+           if (game.state.galaxy[quadx][quady].supernova) { // Galaxy went Nova!
                atover(0);
                continue;
            }
            if (hitme && justin==0) {
                attack(2);
                if (alldone) break;
-               if (game.state.galaxy[quadx][quady] == SUPERNOVA_PLACE) {       // went NOVA! 
+               if (game.state.galaxy[quadx][quady].supernova) {        // went NOVA! 
                    atover(0);
                    hitme = TRUE;
                    continue;