projects
/
super-star-trek.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Ready to ship 2.6.
[super-star-trek.git]
/
sst.py
diff --git
a/sst.py
b/sst.py
index daf42f8648484ebda35c3046a79ab05644734a8c..5e6d88ec3d130e41418523bed1d583246e056f65 100755
(executable)
--- a/
sst.py
+++ b/
sst.py
@@
-1,4
+1,4
@@
-#!/usr/bin/env python
2
+#!/usr/bin/env python
"""
sst.py -- Super Star Trek 2K
"""
sst.py -- Super Star Trek 2K
@@
-17,6
+17,7
@@
from __future__ import print_function, division
import os, sys, math, curses, time, pickle, copy, gettext, getpass
import getopt, socket, locale
import os, sys, math, curses, time, pickle, copy, gettext, getpass
import getopt, socket, locale
+import codecs
# This import only works on Unixes. The intention is to enable
# Ctrl-P, Ctrl-N, and friends in Cmd.
# This import only works on Unixes. The intention is to enable
# Ctrl-P, Ctrl-N, and friends in Cmd.
@@
-31,7
+32,7
@@
try:
except NameError:
my_input = input
except NameError:
my_input = input
-version = "2.
4
"
+version = "2.
6
"
docpath = (".", "doc/", "/usr/share/doc/sst/")
docpath = (".", "doc/", "/usr/share/doc/sst/")
@@
-44,7
+45,7
@@
def _(st):
class randomizer:
# LCG PRNG parameters tested against
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
LCG_A = 1093
LCG_C = 221587
LCG_M = 1048576
@@
-53,7
+54,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
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):
@staticmethod
def withprob(p):
@@
-196,8
+197,8
@@
class Coord:
return self.roundtogrid() % QUADSIZE
def scatter(self):
s = 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:
return s
def __str__(self):
if self.i is None or self.j is None:
@@
-309,6
+310,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_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
# Define devices
DSRSENS = 0
@@
-836,7
+838,7
@@
def supercommander():
sc = game.state.kscmdr
for (i, base) in enumerate(game.state.baseq):
basetbl.append((i, (base - sc).distance()))
sc = game.state.kscmdr
for (i, base) in enumerate(game.state.baseq):
basetbl.append((i, (base - sc).distance()))
- if
game.state.baseq
> 1:
+ if
len(game.state.baseq)
> 1:
basetbl.sort(key=lambda x: x[1])
# look for nearest base without a commander, no Enterprise, and
# without too many Klingons, and not already under attack.
basetbl.sort(key=lambda x: x[1])
# look for nearest base without a commander, no Enterprise, and
# without too many Klingons, and not already under attack.
@@
-2857,7
+2859,7
@@
def supernova(w):
for nq.i in range(GALSIZE):
for nq.j in range(GALSIZE):
nstars += game.state.galaxy[nq.i][nq.j].stars
for nq.i in range(GALSIZE):
for nq.j in range(GALSIZE):
nstars += game.state.galaxy[nq.i][nq.j].stars
- if stars == 0:
+ if
n
stars == 0:
return # nothing to supernova exists
num = rnd.integer(nstars) + 1
for nq.i in range(GALSIZE):
return # nothing to supernova exists
num = rnd.integer(nstars) + 1
for nq.i in range(GALSIZE):
@@
-3521,7
+3523,7
@@
def prouts(proutsline):
def cgetline():
"Get a line of input."
if game.options & OPTION_CURSES:
def cgetline():
"Get a line of input."
if game.options & OPTION_CURSES:
- linein = c
urwnd.getstr(
) + "\n"
+ linein = c
odecs.decode(curwnd.getstr()
) + "\n"
curwnd.refresh()
else:
if replayfp and not replayfp.closed:
curwnd.refresh()
else:
if replayfp and not replayfp.closed:
@@
-5324,6
+5326,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)
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)
else:
show = "..."
proutn(show)
@@
-5353,6
+5357,8
@@
def sectscan(goodScan, i, j):
'C':LIGHTRED,
'R':LIGHTRED,
'T':LIGHTRED,
'C':LIGHTRED,
'R':LIGHTRED,
'T':LIGHTRED,
+ '@':LIGHTGREEN,
+ 'P':LIGHTGREEN,
}.get(game.quad[i][j], DEFAULT))
proutn("%c " % game.quad[i][j])
textcolor(DEFAULT)
}.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.
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_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
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.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:
# Create a blank quadrant
game.quad = fill2d(QUADSIZE, lambda i, j: '.')
if game.iscate: