Be a bit more colorful.
[super-star-trek.git] / sst.py
diff --git a/sst.py b/sst.py
index 63f1f31499db4cc84ea01304bd2a93735aa53e99..b2067e965cfa4863bf58e7a9f9a03cf647363a6b 100755 (executable)
--- a/sst.py
+++ b/sst.py
@@ -31,7 +31,7 @@ try:
 except NameError:
     my_input = input
 
-version = "2.4"
+version = "2.5"
 
 docpath        = (".", "doc/", "/usr/share/doc/sst/")
 
@@ -44,7 +44,7 @@ def _(st):
 
 class randomizer:
     # LCG PRNG parameters tested against
-    # Knuth vol. 2. by the authors of ADVENT 
+    # Knuth vol. 2. by the authors of ADVENT
     LCG_A = 1093
     LCG_C = 221587
     LCG_M = 1048576
@@ -53,7 +53,7 @@ class randomizer:
     def random():
         old_x = game.lcg_x
         game.lcg_x = (randomizer.LCG_A * game.lcg_x + randomizer.LCG_C) % randomizer.LCG_M
-        return old_x / randomizer.LCG_M;
+        return old_x / randomizer.LCG_M
 
     @staticmethod
     def withprob(p):
@@ -196,8 +196,8 @@ class Coord:
         return self.roundtogrid() % QUADSIZE
     def scatter(self):
         s = Coord()
-        s.i = self.i + rnd.range(-1, 2)
-        s.j = self.j + rnd.range(-1, 2)
+        s.i = self.i + rnd.integer(-1, 2)
+        s.j = self.j + rnd.integer(-1, 2)
         return s
     def __str__(self):
         if self.i is None or self.j is None:
@@ -309,6 +309,7 @@ OPTION_CLOAK      = 0x80004000        # Enable BSD-Trek capture (Almy, 2013).
 OPTION_PLAIN      = 0x01000000        # user chose plain game
 OPTION_ALMY       = 0x02000000        # user chose Almy variant
 OPTION_COLOR      = 0x04000000        # enable color display (ESR, 2010)
+OPTION_DOTFILL    = 0x08000000        # fix dotfill glitch in chart (ESR, 2019)
 
 # Define devices
 DSRSENS         = 0
@@ -5324,6 +5325,8 @@ def chart():
                 show = ".1."
             elif game.state.galaxy[i][j].charted:
                 show = "%3d" % (game.state.chart[i][j].klingons*100 + game.state.chart[i][j].starbase * 10 + game.state.chart[i][j].stars)
+                if (game.options & OPTION_DOTFILL):
+                    show = show.replace(" ", ".")
             else:
                 show = "..."
             proutn(show)
@@ -5353,6 +5356,9 @@ def sectscan(goodScan, i, j):
                        'C':LIGHTRED,
                        'R':LIGHTRED,
                        'T':LIGHTRED,
+                       '@':LIGHTGREEN,
+                       'P':LIGHTGREEN,
+                       '?':MAGENTA,
                       }.get(game.quad[i][j], DEFAULT))
         proutn("%c " % game.quad[i][j])
         textcolor(DEFAULT)
@@ -5986,11 +5992,11 @@ def choose():
         scanner.nexttok()
     if scanner.sees("plain"):
         # Approximates the UT FORTRAN version.
-        game.options &=~ (OPTION_THOLIAN | OPTION_PLANETS | OPTION_THINGY | OPTION_PROBE | OPTION_RAMMING | OPTION_MVBADDY | OPTION_BLKHOLE | OPTION_BASE | OPTION_WORLDS | OPTION_COLOR | OPTION_CAPTURE | OPTION_CLOAK)
+        game.options &=~ (OPTION_THOLIAN | OPTION_PLANETS | OPTION_THINGY | OPTION_PROBE | OPTION_RAMMING | OPTION_MVBADDY | OPTION_BLKHOLE | OPTION_BASE | OPTION_WORLDS | OPTION_COLOR | OPTION_CAPTURE | OPTION_CLOAK | OPTION_DOTFILL)
         game.options |= OPTION_PLAIN
     elif scanner.sees("almy"):
         # Approximates Tom Almy's version.
-        game.options &=~ (OPTION_THINGY | OPTION_BLKHOLE | OPTION_BASE | OPTION_WORLDS | OPTION_COLOR)
+        game.options &=~ (OPTION_THINGY | OPTION_BLKHOLE | OPTION_BASE | OPTION_WORLDS | OPTION_COLOR | OPTION_DOTFILL)
         game.options |= OPTION_ALMY
     elif scanner.sees("fancy") or scanner.sees("\n"):
         pass
@@ -6054,6 +6060,7 @@ def newqad():
     game.iplnet = None
     game.neutz = game.inorbit = game.landed = False
     game.ientesc = game.iseenit = game.isviolreported = False
+    game.tholian = None
     # Create a blank quadrant
     game.quad = fill2d(QUADSIZE, lambda i, j: '.')
     if game.iscate: