Merge Stas's patch #3.
[super-star-trek.git] / sst.c
diff --git a/sst.c b/sst.c
index 5cba52ea154cc675bc71f5a390360149e9bd4756..eb7c8f6cb4303edc7ab08b4b85bbf35c12332adf 100644 (file)
--- a/sst.c
+++ b/sst.c
@@ -300,15 +300,17 @@ static void makemoves(void) {
                         clrscr();
 #endif /* SERGEEV */
                        proutn("COMMAND> ");
-#ifdef SERGEEV
                         if (scan() == IHEOL) {
+#ifdef SERGEEV
                             _setcursortype(_NOCURSOR);
                             setwnd(4);
                             clrscr();
                             chart(0);
                             _setcursortype(_NORMALCURSOR);
+#endif /* SERGEEV */
                             continue;
                         }
+#ifdef SERGEEV
                         ididit=0;
                         clrscr();
                         setwnd(4);
@@ -406,7 +408,7 @@ static void makemoves(void) {
                                srscan(2);
                                break;
                        case 21:                        // Game Report 
-                               report(0);
+                               report();
                                break;
                        case 22:                        // use COMPUTER!
                                eta();
@@ -415,12 +417,15 @@ static void makemoves(void) {
                                listCommands(TRUE);
                                break;
                        case 24:                // Emergency exit
-                               clearscreen();  // Hide screen
+#ifdef SERGEEV
+                               clrscr();       // Hide screen
+#endif /* SERGEEV */
                                freeze(TRUE);   // forced save
                                exit(1);                // And quick exit
                                break;
                        case 25:
                                probe();                // Launch probe
+                                if (ididit) hitme = TRUE;
                                break;
                        case 26:                        // Abandon Ship
                                abandn();
@@ -430,8 +435,11 @@ static void makemoves(void) {
                                break;
                        case 28:                        // Save Game
                                freeze(FALSE);
+#ifdef SERGEEV
+                                clrscr();
+#endif /* SERGEEV */
                                if (skill > 3)
-                                       prout("WARNING--Frozen games produce no plaques!");
+                                        prout("WARNING--Saved games produce no plaques!");
                                break;
                        case 29:                        // Try a desparation measure
                                deathray();
@@ -470,7 +478,6 @@ static void makemoves(void) {
                                atover(0);
                                continue;
                        }
-                       if (nenhere == 0) movetho();
                        if (hitme && justin==0) {
                                attack(2);
                                if (alldone) break;
@@ -488,7 +495,8 @@ static void makemoves(void) {
 
 
 int main(int argc, char **argv) {
-    int i, option, usecurses = TRUE;
+       int i, option, usecurses = TRUE;
+
        while ((option = getopt(argc, argv, "t")) != -1) {
            switch (option) {
            case 't':
@@ -500,21 +508,28 @@ int main(int argc, char **argv) {
            }
        }
 
+#ifndef SERGEEV
        iostart(usecurses);
-       prelim(); 
+#else
+       randomize();
+        textattr(7);
+        clrscr();
+        setwnd(0);
+#endif /* SERGEEV */
        line[0] = '\0';
        for (i = optind; i < argc;  i++) {
                strcat(line, argv[i]);
                strcat(line, " ");
        }
        while (TRUE) { /* Play a game */
+               prelim();
                setup(line[0] == '\0');
                if (alldone) {
                        score();
                        alldone = 0;
                }
                else makemoves();
-               skip(2);
+               skip(1);
                stars();
                skip(1);
 
@@ -567,7 +582,7 @@ char *cramlc(enum loctype key, int x, int y) {
        buf[0] = '\0';
        if (key == quadrant) strcpy(buf, "Quadrant ");
        else if (key == sector) strcpy(buf, "Sector ");
-       sprintf(buf+strlen(buf), "%d-%d", x, y);
+       sprintf(buf+strlen(buf), "%d - %d", x, y);
        return buf;
 }
 
@@ -637,6 +652,14 @@ int scan(void) {
                        return IHEOL;
                }
                getline(line, sizeof(line));
+#ifdef SERGEEV
+                fflush(stdin);
+                if (curwnd==5){
+                   clrscr();
+                   setwnd(4);
+                   clrscr();
+                }
+#endif /* SERGEEV */
                linep = line;
        }
        // Skip leading white space