# logfp.write("#seed(%d)\n" % n)
game.lcg_x = n % randomizer.LCG_M
+ @staticmethod
+ def getrngstate():
+ return game.lcg_x
+
+ @staticmethod
+ def setrngstate(n):
+ game.lcg_x = n
+
GALSIZE = 8 # Galaxy size in quadrants
NINHAB = (GALSIZE * GALSIZE // 2) # Number of inhabited worlds
MAXUNINHAB = 10 # Maximum uninhabited worlds
return True
# This should not happen
prout(_("Which way did he go?")) # pragma: no cover
- return False
+ return False # pragma: no cover
elif iquad == ' ':
skip(1)
prouts(_("***RED ALERT! RED ALERT!"))
# Place thing (in tournament game, we don't want one!)
# New in SST2K: never place the Thing near a starbase.
# This makes sense and avoids a special case in the old code.
- #global thing
- #if game.tourn is None:
- # while True:
- # thing.location = randplace(GALSIZE)
- # # Put it somewhere a starbase is not
- # if thing.location not in game.state.baseq:
- # break
+ if game.tourn is None:
+ # Avoid distrubing the RNG chain. This code
+ # was a late fix and we don't want to mess up
+ # all the regression tests.
+ state = randomizer.getrngstate()
+ while True:
+ thing.location = randplace(GALSIZE)
+ # Put it somewhere a starbase is not
+ if thing.location not in game.state.baseq:
+ break
+ randomizer.setrngstate(state)
skip(2)
game.state.snap = False
if game.skill == SKILL_NOVICE:
else:
game.options |= OPTION_TTY
seed = int(time.time())
- (options, arguments) = getopt.getopt(sys.argv[1:], "cr:s:txV")
- for (switch, val) in options:
- if switch == '-r':
- # pylint: disable=raise-missing-from
- try:
- replayfp = open(val, "r")
- except IOError:
- sys.stderr.write("sst: can't open replay file %s\n" % val)
- raise SystemExit(1)
- # pylint: disable=raise-missing-from
- try:
- line = replayfp.readline().strip()
- (leader, __, seed) = line.split()
- # pylint: disable=eval-used
- seed = eval(seed)
- line = replayfp.readline().strip()
- arguments += line.split()[2:]
- except ValueError: # pragma: no cover
- sys.stderr.write("sst: replay file %s is ill-formed\n"% val)
+ try:
+ (options, arguments) = getopt.getopt(sys.argv[1:], "cr:s:txV")
+ for (switch, val) in options:
+ if switch == '-r':
+ # pylint: disable=raise-missing-from
+ try:
+ replayfp = open(val, "r")
+ except IOError:
+ sys.stderr.write("sst: can't open replay file %s\n" % val)
+ raise SystemExit(1)
+ # pylint: disable=raise-missing-from
+ try:
+ line = replayfp.readline().strip()
+ (leader, __, seed) = line.split()
+ # pylint: disable=eval-used
+ seed = eval(seed)
+ line = replayfp.readline().strip()
+ arguments += line.split()[2:]
+ except ValueError: # pragma: no cover
+ sys.stderr.write("sst: replay file %s is ill-formed\n"% val)
+ raise SystemExit(1)
+ game.options |= OPTION_TTY
+ game.options &=~ OPTION_CURSES
+ elif switch == '-s': # pragma: no cover
+ seed = int(val)
+ elif switch == '-t': # pragma: no cover
+ game.options |= OPTION_TTY
+ game.options &=~ OPTION_CURSES
+ elif switch == '-x': # pragma: no cover
+ game.idebug = True
+ elif switch == '-c': # Enable curses debugging - undocumented
+ game.cdebug = True
+ elif switch == '-V': # pragma: no cover
+ print("SST2K", version)
+ raise SystemExit(0)
+ else: # pragma: no cover
+ sys.stderr.write("usage: sst [-t] [-x] [startcommand...].\n")
raise SystemExit(1)
- game.options |= OPTION_TTY
- game.options &=~ OPTION_CURSES
- elif switch == '-s': # pragma: no cover
- seed = int(val)
- elif switch == '-t': # pragma: no cover
- game.options |= OPTION_TTY
- game.options &=~ OPTION_CURSES
- elif switch == '-x': # pragma: no cover
- game.idebug = True
- elif switch == '-c': # Enable curses debugging - undocumented
- game.cdebug = True
- elif switch == '-V': # pragma: no cover
- print("SST2K", version)
- raise SystemExit(0)
- else: # pragma: no cover
- sys.stderr.write("usage: sst [-t] [-x] [startcommand...].\n")
- raise SystemExit(1)
+ except getopt.GetoptError as e:
+ print(e)
+ raise SystemExit(1)
# where to save the input in case of bugs
if "TMPDIR" in os.environ: # pragma: no cover
tmpdir = os.environ['TMPDIR']