Simplify the probe code.
[super-star-trek.git] / src / sst.py
index d3047cd7dd8b2d2e2e134ea02769505cc4f9f232..94a7184d417628d66659dc6be2a2bf526a34d6af 100644 (file)
@@ -853,9 +853,9 @@ def movescom(iq, avoid):
     "Commander movement helper." 
     # Avoid quadrants with bases if we want to avoid Enterprise 
     if not welcoming(iq) or (avoid and iq in game.state.baseq):
-       return True
+       return False
     if game.justin and not game.iscate:
-       return True
+       return False
     # do the move 
     game.state.galaxy[game.state.kscmdr.i][game.state.kscmdr.j].klingons -= 1
     game.state.kscmdr = iq
@@ -887,7 +887,7 @@ def movescom(iq, avoid):
                proutn(_("   a planet in Quadrant %s has been destroyed") % game.state.kscmdr)
                prout(_("   by the Super-commander.\""))
            break
-    return False; # looks good! 
+    return True; # looks good! 
                        
 def supercommander():
     "Move the Super Commander." 
@@ -945,24 +945,24 @@ def supercommander():
     # there was what looked like a bug in the Almy C code here,
     # but it might be this translation is just wrong.
     iq = game.state.kscmdr + idelta
-    if movescom(iq, avoid):
+    if not movescom(iq, avoid):
        # failed -- try some other maneuvers 
        if idelta.i==0 or idelta.j==0:
            # attempt angle move 
            if idelta.i != 0:
                iq.j = game.state.kscmdr.j + 1
-               if movescom(iq, avoid):
+               if not movescom(iq, avoid):
                    iq.j = game.state.kscmdr.j - 1
                    movescom(iq, avoid)
-           else:
+           elif idelta.j != 0:
                iq.i = game.state.kscmdr.i + 1
-               if movescom(iq, avoid):
+               if not movescom(iq, avoid):
                    iq.i = game.state.kscmdr.i - 1
                    movescom(iq, avoid)
        else:
            # try moving just in x or y 
            iq.j = game.state.kscmdr.j
-           if movescom(iq, avoid):
+           if not movescom(iq, avoid):
                iq.j = game.state.kscmdr.j + idelta.j
                iq.i = game.state.kscmdr.i
                movescom(iq, avoid)
@@ -970,7 +970,7 @@ def supercommander():
     if len(game.state.baseq) == 0:
        unschedule(FSCMOVE)
     else:
-        for (i, ibq) in enumerate(game.state.baseq):
+        for ibq in game.state.baseq:
            if ibq == game.state.kscmdr and game.state.kscmdr == game.battle:
                # attack the base 
                if avoid:
@@ -1654,7 +1654,7 @@ def deadkl(w, type, mv):
     proutn(crmena(True, type, "sector", mv))
     # Decide what kind of enemy it is and update appropriately 
     if type == IHR:
-        # chalk up a Romulan 
+        # Chalk up a Romulan 
         game.state.galaxy[game.quadrant.i][game.quadrant.j].romulans -= 1
         game.irhere -= 1
         game.state.nromrem -= 1
@@ -1666,7 +1666,7 @@ def deadkl(w, type, mv):
         global thing
         thing = None
     else:
-        # Some type of a Klingon 
+        # Killed some type of Klingon 
         game.state.galaxy[game.quadrant.i][game.quadrant.j].klingons -= 1
         game.klhere -= 1
         if type == IHC:
@@ -2455,26 +2455,23 @@ def events():
        elif evcode == FDSPROB: # Move deep space probe 
            schedule(FDSPROB, 0.01)
            game.probe += game.probein
-           i = int(round(game.probe.i/float(QUADSIZE)))
-           j = int(round(game.probe.j/float(QUADSIZE)))
-           if game.probec.i != i or game.probec.j != j:
-               game.probec.i = i
-               game.probec.j = j
-               if not VALID_QUADRANT(i, j) or \
+            newloc = (game.probe / float(QUADSIZE)).snaptogrid()
+            if newloc != game.probec:
+                game.probec = newloc
+               if not VALID_QUADRANT(game.probec.i, game.probec.j) or \
                    game.state.galaxy[game.probec.i][game.probec.j].supernova:
                    # Left galaxy or ran into supernova
                     if communicating():
                        announce()
                        skip(1)
                        proutn(_("Lt. Uhura-  \"The deep space probe "))
-                       if not VALID_QUADRANT(i, j):
-                           proutn(_("has left the galaxy"))
+                       if not VALID_QUADRANT(game.probec.i, game.probec.j):
+                           proutn(_("has left the galaxy.\""))
                        else:
-                           proutn(_("is no longer transmitting"))
-                       prout(".\"")
+                           proutn(_("is no longer transmitting.\""))
                    unschedule(FDSPROB)
                    continue
-                if not communicating():
+                if communicating():
                    announce()
                    skip(1)
                    proutn(_("Lt. Uhura-  \"The deep space probe is now in Quadrant %s.\"") % game.probec)
@@ -3357,7 +3354,7 @@ def pause_game():
     if game.options & OPTION_CURSES:
         drawmaps(0)
         setwnd(prompt_window)
-        prompt_window.wclear()
+        prompt_window.clear()
         prompt_window.addstr(prompt)
         prompt_window.getstr()
         prompt_window.clear()
@@ -3452,8 +3449,8 @@ def setwnd(wnd):
 def clreol():
     "Clear to end of line -- can be a no-op in tty mode" 
     if game.options & OPTION_CURSES:
-        wclrtoeol(curwnd)
-        wrefresh(curwnd)
+        curwnd.clrtoeol()
+        curwnd.refresh()
 
 def clrscr():
     "Clear screen -- can be a no-op in tty mode."
@@ -5388,18 +5385,17 @@ def prelim():
 def freeze(boss):
     "Save game."
     if boss:
-       scanner.token = "emsave.trk"
-    else:
+       scanner.push("emsave.trk")
+    key = scanner.next()
+    if key == "IHEOL":
+        proutn(_("File name: "))
         key = scanner.next()
-       if key == "IHEOL":
-           proutn(_("File name: "))
-           key = scanner.next()
-       if key != "IHALPHA":
-           huh()
-           return
-       scanner.chew()
-        if '.' not in scanner.token:
-           scanner.token += ".trk"
+    if key != "IHALPHA":
+        huh()
+        return
+    scanner.chew()
+    if '.' not in scanner.token:
+        scanner.token += ".trk"
     try:
         fp = open(scanner.token, "wb")
     except IOError:
@@ -5774,7 +5770,7 @@ def choose():
        # Approximates Tom Almy's version.
        game.options &=~ (OPTION_THINGY | OPTION_BLKHOLE | OPTION_BASE | OPTION_WORLDS)
        game.options |= OPTION_ALMY
-    elif scanner.sees("fancy"):
+    elif scanner.sees("fancy") or scanner.sees("\n"):
        pass
     elif len(scanner.token):
         proutn(_("What is \"%s\"?") % scanner.token)
@@ -6293,10 +6289,10 @@ class sstscanner:
             if not line:
                 continue
             else:
-                self.inqueue = line.lstrip().split() + ["IHEOL"] 
+                self.inqueue = line.lstrip().split() + ["\n"]
         # From here on in it's all looking at the queue
         self.token = self.inqueue.pop(0)
-        if self.token == "IHEOL":
+        if self.token == "\n":
             self.type = "IHEOL"
             return "IHEOL"
         try: