shorten password to 3, its just a game
[super-star-trek.git] / src / sst.py
index fe29b948d11870230dff7c043789bc50e9474b44..09d838d2bdd3001cb5dc02f6cba62a807be8445f 100644 (file)
@@ -13,8 +13,7 @@ ion how to modify (and how not to modify!) this code.
 """
 import os, sys, math, curses, time, readline, cPickle, random, copy, gettext, getpass
 
-SSTDOC         = "/usr/share/doc/sst/sst.doc"
-DOC_NAME       = "sst.doc"
+docpath        = (".", "../doc", "/usr/share/doc/sst")
 
 def _(str): return gettext.gettext(str)
 
@@ -1483,8 +1482,8 @@ def targetcheck(w):
        return None
     return delta.bearing()
 
-def photon():
-    "Launch photon torpedo."
+def torps():
+    "Launch photon torpedo salvo."
     course = []
     game.ididit = False
     if damaged(DPHOTON):
@@ -3064,6 +3063,12 @@ curwnd = None
 
 def iostart():
     global stdscr, rows
+    "for some recent versions of python2, the following enables UTF8"
+    "for the older ones we probably need to set C locale, and the python3"
+    "has no problems at all"
+    if sys.version_info.major < 3:
+       import locale
+       locale.setlocale(locale.LC_ALL, "")
     gettext.bindtextdomain("sst", "/usr/local/share/locale")
     gettext.textdomain("sst")
     if not (game.options & OPTION_CURSES):
@@ -3149,7 +3154,7 @@ def skip(i):
        if game.options & OPTION_CURSES:
             (y, x) = curwnd.getyx()
             (my, mx) = curwnd.getmaxyx()
-           if curwnd == message_window and y >= my - 3:
+           if curwnd == message_window and y >= my - 2:
                pause_game()
                clrscr()
            else:
@@ -4780,7 +4785,7 @@ def report():
     scanner.chew()
     s1 = "" and game.thawed and _("thawed ")
     s2 = {1:"short", 2:"medium", 4:"long"}[game.length]
-    s3 = (None, _("novice"). _("fair"),
+    s3 = (None, _("novice"), _("fair"),
           _("good"), _("expert"), _("emeritus"))[game.skill]
     prout(_("You %s a %s%s %s game.") % ((_("were playing"), _("are playing"))[game.alldone], s1, s2, s3))
     if game.skill>SKILL_GOOD and game.thawed and not game.alldone:
@@ -4874,7 +4879,8 @@ def lrscan(silent):
                    proutn(" ***")
                elif not silent:
                    proutn(" %3d" % (game.state.chart[x][y].klingons*100 + game.state.chart[x][y].starbase * 10 + game.state.chart[x][y].stars))
-       prout(" ")
+       if not silent:
+           prout(" ")
 
 def damagereport():
     "Damage report."
@@ -5742,7 +5748,7 @@ def setpassword():
                break
     else:
         game.passwd = ""
-        for i in range(8):
+        for i in range(3):
            game.passwd += chr(ord('a')+randrange(26))
 
 # Code from sst.c begins here
@@ -5812,7 +5818,7 @@ def helpme():
        setwnd(message_window)
        if key == "IHEOL":
            return
-        if scanner.token in commands or scanner.token == "ABBREV":
+        if scanner.token.upper() in commands or scanner.token == "ABBREV":
            break
        skip(1)
        listCommands()
@@ -5820,22 +5826,20 @@ def helpme():
        scanner.chew()
        skip(1)
     cmd = scanner.token.upper()
-    try:
-        fp = open(SSTDOC, "r")
-    except IOError:
+    for directory in docpath:
         try:
-            fp = open(DOC_NAME, "r")
+            fp = open(os.path.join(directory, "sst.doc"), "r")
+            break
         except IOError:
-            prout(_("Spock-  \"Captain, that information is missing from the"))
-            proutn(_("   computer. You need to find "))
-            proutn(DOC_NAME)
-            prout(_(" and put it in the"))
-            proutn(_("   current directory or to "))
-            proutn(SSTDOC)
-            prout(".\"")
-            # This used to continue: "You need to find SST.DOC and put 
-            # it in the current directory."
-            return
+            pass
+    else:
+        prout(_("Spock-  \"Captain, that information is missing from the"))
+        prout(_("   computer. You need to find sst.doc and put it somewhere"))
+        proutn(_("   in these directories: %s") % ":".join(docpath))
+        prout(".\"")
+        # This used to continue: "You need to find SST.DOC and put 
+        # it in the current directory."
+        return
     while True:
         linebuf = fp.readline()
        if linebuf == '':
@@ -5844,12 +5848,13 @@ def helpme():
            return
        if linebuf[0] == '%' and linebuf[1] == '%' and linebuf[2] == ' ':
             linebuf = linebuf[3:].strip()
-            if cmd == linebuf:
+            if cmd.upper() == linebuf:
                break
     skip(1)
     prout(_("Spock- \"Captain, I've found the following information:\""))
     skip(1)
-    while linebuf in fp:
+    while True:
+        linebuf = fp.readline()
         if "******" in linebuf:
            break
        proutn(linebuf)
@@ -5900,8 +5905,8 @@ def makemoves():
            phasers()
            if game.ididit:
                hitme = True
-       elif cmd == "TORPEDO":          # photon torpedos
-           photon()
+       elif cmd in ("TORPEDO", "PHOTONS"):     # photon torpedos
+           torps()
            if game.ididit:
                hitme = True
        elif cmd == "MOVE":             # move under warp