Fix strange bug in warp code.
[super-star-trek.git] / sst.py
diff --git a/sst.py b/sst.py
index 3a777e1c5ba0f5cbc0a7acba8a6087353b9cecd4..e140f259a97cb64e1041c515e5010a49df41f352 100755 (executable)
--- a/sst.py
+++ b/sst.py
@@ -13,7 +13,7 @@ on how to modify (and how not to modify!) this code.
 """
 import os, sys, math, curses, time, readline, cPickle, random, copy, gettext, getpass
 
 """
 import os, sys, math, curses, time, readline, cPickle, random, copy, gettext, getpass
 
-version="2.0"
+version="2.1"
 
 docpath        = (".", "../doc", "/usr/share/doc/sst")
 
 
 docpath        = (".", "../doc", "/usr/share/doc/sst")
 
@@ -3530,7 +3530,7 @@ def imove(icourse=None, noattack=False):
         if icourse.origin.quadrant() != icourse.location.quadrant():
             newquadrant(noattack)
             break
         if icourse.origin.quadrant() != icourse.location.quadrant():
             newquadrant(noattack)
             break
-        elif check_collision(icourse, w):
+        elif check_collision(w):
             print "Collision detected"
             break
         else:
             print "Collision detected"
             break
         else:
@@ -3901,7 +3901,7 @@ def warp(wcourse, involuntary):
                    twarp = False
             wcourse.reset()
     # Activate Warp Engines and pay the cost 
                    twarp = False
             wcourse.reset()
     # Activate Warp Engines and pay the cost 
-    imove(course, noattack=False)
+    imove(wcourse, noattack=False)
     if game.alldone:
        return
     game.energy -= wcourse.power(game.warpfac)
     if game.alldone:
        return
     game.energy -= wcourse.power(game.warpfac)
@@ -5335,10 +5335,21 @@ def setup():
     game.nkinks = game.nhelp = game.casual = game.abandoned = 0
     game.iscate = game.resting = game.imine = game.icrystl = game.icraft = False
     game.isatb = game.state.nplankl = 0
     game.nkinks = game.nhelp = game.casual = game.abandoned = 0
     game.iscate = game.resting = game.imine = game.icrystl = game.icraft = False
     game.isatb = game.state.nplankl = 0
-    game.state.starkl = game.state.basekl = 0
+    game.state.starkl = game.state.basekl = game.state.nworldkl = 0
     game.iscraft = "onship"
     game.landed = False
     game.alive = True
     game.iscraft = "onship"
     game.landed = False
     game.alive = True
+
+    # the galaxy
+    game.state.galaxy = fill2d(GALSIZE, lambda i_unused, j_unused: Quadrant())
+    # the starchart
+    game.state.chart = fill2d(GALSIZE, lambda i_unused, j_unused: Page())
+
+    game.state.planets = []      # Planet information
+    game.state.baseq = []      # Base quadrant coordinates
+    game.state.kcmdr = []      # Commander quadrant coordinates
+    game.statekscmdr = Coord() # Supercommander quadrant coordinates
+
     # Starchart is functional but we've never seen it
     game.lastchart = FOREVER
     # Put stars in the galaxy
     # Starchart is functional but we've never seen it
     game.lastchart = FOREVER
     # Put stars in the galaxy
@@ -5538,7 +5549,7 @@ def choose():
            return True
         if scanner.sees("regular"):
            break
            return True
         if scanner.sees("regular"):
            break
-       proutn(_("What is \"%s\"?") % scanner.token)
+       proutn(_("What is \"%s\"? ") % scanner.token)
        scanner.chew()
     while game.length==0 or game.skill==SKILL_NONE:
        if scanner.next() == "IHALPHA":
        scanner.chew()
     while game.length==0 or game.skill==SKILL_NONE:
        if scanner.next() == "IHALPHA":
@@ -5898,8 +5909,13 @@ def makemoves():
            clrscr()
            setwnd(message_window)
            clrscr()
            clrscr()
            setwnd(message_window)
            clrscr()
+           abandon_passed = False
            for (cmd, opt) in commands:
            for (cmd, opt) in commands:
-               if cmd.startswith(scanner.token.upper()):
+               # commands after ABANDON cannot be abbreviated
+               if cmd == "ABANDON":
+                   abandon_passed = True
+               if cmd == scanner.token.upper() or (not abandon_passed \
+                       and cmd.startswith(scanner.token.upper())):
                    break;
            if cmd == "":
                 listCommands()
                    break;
            if cmd == "":
                 listCommands()
@@ -6353,3 +6369,5 @@ if __name__ == '__main__':
         if logfp:
             logfp.close()
         print ""
         if logfp:
             logfp.close()
         print ""
+
+# End.