self.i = x # Row
self.j = y # Column
def valid_quadrant(self):
- return self.i >= 0 and self.i < GALSIZE and self.j >= 0 and self.j < GALSIZE
+ return (self.i is not None) and (self.j is not None) and (self.i >= 0) and (self.i < GALSIZE) and (self.j >= 0) and (self.j < GALSIZE)
def valid_sector(self):
- return self.i >= 0 and self.i < QUADSIZE and self.j >= 0 and self.j < QUADSIZE
+ return (self.i is not None) and (self.j is not None) and (self.i >= 0) and (self.i < QUADSIZE) and (self.j >= 0) and (self.j < QUADSIZE)
def invalidate(self):
self.i = self.j = None
def __eq__(self, other):
iq.i = game.quadrant.i+(look.i+(QUADSIZE-1))//QUADSIZE - 1
iq.j = game.quadrant.j+(look.j+(QUADSIZE-1))//QUADSIZE - 1
if not welcoming(iq):
- return False
+ return []
if enemy.type == 'R':
- return False # Romulans cannot escape!
+ return [] # Romulans cannot escape!
if not irun:
# avoid intruding on another commander's territory
if enemy.type == 'C':
deadkl(w, iquad, w)
return None
proutn(crmena(True, iquad, "sector", w))
- displacement = course(track.bearing+rnd.real(-2.4, 2.4), distance=2**0.5)
+ displacement = course(track.bearing+rnd.real(-2.4, 2.4), distance=2**0.5, origin=w)
displacement.nexttok()
bumpto = displacement.sector()
if not bumpto.valid_sector():
elif evcode == FCDBAS: # Commander succeeds in destroying base
if evcode == FCDBAS:
unschedule(FCDBAS)
- if not game.state.baseq() \
+ if not game.state.baseq \
or not game.state.galaxy[game.battle.i][game.battle.j].starbase:
game.battle.invalidate()
continue
pdest.charted = True
game.probe.moves -= 1 # One less to travel
if game.probe.arrived() and game.isarmed and pdest.stars:
- supernova(game.probe) # fire in the hole!
+ supernova(game.probe.quadrant()) # fire in the hole!
unschedule(FDSPROB)
if game.state.galaxy[pquad.i][pquad.j].supernova:
return
if game.iscloaked:
# We can't be tractor beamed if cloaked,
# so move the event into the future
- postpone(FTBEAM, game.optime + expran(1.5*game.intime/len(game.kcmdr)))
+ postpone(FTBEAM, game.optime + expran(1.5*game.intime/len(game.state.kcmdr)))
else:
trbeam = True
game.condition = "red"
if game.inorbit:
prout(_("You must first leave standard orbit."))
return
- if game.base is None or abs(game.sector.i-game.base.i) > 1 or abs(game.sector.j-game.base.j) > 1:
+ if game.base is None or not game.base.valid_sector():
+ prout(_("No starbase available for docking in this quadrant."))
+ return
+ if (abs(game.sector.i-game.base.i) > 1) or (abs(game.sector.j-game.base.j) > 1):
prout(crmshp() + _(" not adjacent to base."))
return
if game.iscloaked:
break
prout(_("fails."))
textcolor(DEFAULT)
- curses.delay_output(500)
+ if game.options & OPTION_CURSES:
+ curses.delay_output(500)
if m > 3:
game.quad[game.sector.i][game.sector.j]='?'
game.alive = False
logfp.write("# options %s\n" % " ".join(arguments))
logfp.write("# SST2K version %s\n" % version)
logfp.write("# recorded by %s@%s on %s\n" % \
- (getpass.getuser(),socket.gethostname(),time.ctime()))
+ (getpass.getuser(),socket.getfqdn(),time.ctime()))
rnd.seed(seed)
scanner = sstscanner()
for arg in arguments: