def __init__(self, etype=None, loc=None, power=None):
self.type = etype
self.location = Coord()
+ self.kdist = None
+ self.kavgd = None
if loc:
self.move(loc)
self.power = power # enemy energy level
self.score = 0.0 # overall score
self.perdate = 0.0 # rate of kills
self.idebug = False # Debugging instrumentation enabled?
+ self.statekscmdr = None # No SuperCommander coordinates yet.
def recompute(self):
# Stas thinks this should be (C expression):
# game.state.remkl + len(game.state.kcmdr) > 0 ?
unschedule(FSCDBAS)
for enemy in game.enemies:
if enemy.type == 'S':
- break
- enemy.move(None)
+ enemy.move(None)
game.klhere -= 1
if game.condition != "docked":
newcnd()
return None
for enemy in game.enemies:
if w == enemy.location:
- break
- kp = math.fabs(enemy.power)
- h1 = 700.0 + randrange(100) - \
- 1000.0 * (w-origin).distance() * math.fabs(math.sin(bullseye-track.angle))
- h1 = math.fabs(h1)
- if kp < h1:
- h1 = kp
- if enemy.power < 0:
- enemy.power -= -h1
- else:
- enemy.power -= h1
- if enemy.power == 0:
- deadkl(w, iquad, w)
- return None
- proutn(crmena(True, iquad, "sector", w))
- displacement = course(track.bearing+randreal(-2.4, 2.4), distance=2**0.5)
- displacement.next()
- bumpto = displacement.sector()
- if not bumpto.valid_sector():
- prout(_(" damaged but not destroyed."))
- return
- if game.quad[bumpto.i][bumpto.j] == ' ':
- prout(_(" buffeted into black hole."))
- deadkl(w, iquad, bumpto)
- if game.quad[bumpto.i][bumpto.j] != '.':
- prout(_(" damaged but not destroyed."))
+ kp = math.fabs(enemy.power)
+ h1 = 700.0 + randrange(100) - \
+ 1000.0 * (w-origin).distance() * math.fabs(math.sin(bullseye-track.angle))
+ h1 = math.fabs(h1)
+ if kp < h1:
+ h1 = kp
+ if enemy.power < 0:
+ enemy.power -= -h1
+ else:
+ enemy.power -= h1
+ if enemy.power == 0:
+ deadkl(w, iquad, w)
+ return None
+ proutn(crmena(True, iquad, "sector", w))
+ displacement = course(track.bearing+randreal(-2.4, 2.4), distance=2**0.5)
+ displacement.next()
+ bumpto = displacement.sector()
+ if not bumpto.valid_sector():
+ prout(_(" damaged but not destroyed."))
+ return
+ if game.quad[bumpto.i][bumpto.j] == ' ':
+ prout(_(" buffeted into black hole."))
+ deadkl(w, iquad, bumpto)
+ if game.quad[bumpto.i][bumpto.j] != '.':
+ prout(_(" damaged but not destroyed."))
+ else:
+ prout(_(" damaged-- displaced by blast to Sector %s ")%bumpto)
+ enemy.location = bumpto
+ game.quad[w.i][w.j] = '.'
+ game.quad[bumpto.i][bumpto.j] = iquad
+ for enemy in game.enemies:
+ enemy.kdist = enemy.kavgd = (game.sector-enemy.location).distance()
+ sortenemies()
+ break
else:
- prout(_(" damaged-- displaced by blast to Sector %s ")%bumpto)
- enemy.location = bumpto
- game.quad[w.i][w.j] = '.'
- game.quad[bumpto.i][bumpto.j] = iquad
- for enemy in game.enemies:
- enemy.kdist = enemy.kavgd = (game.sector-enemy.location).distance()
- sortenemies()
+ prout("Internal error, no enemy where expected!")
+ raise SystemExit, 1
return None
elif iquad == 'B': # Hit a base
skip(1)
return None
break
skip(1)
+ setwnd(message_window)
prout(_("Torpedo missed."))
return None
# Select devices and cause damage
cdam = []
while ncrit > 0:
- ncrit -= 1
while True:
j = randdevice()
# Cheat to prevent shuttle damage unless on ship
cdam.append(j)
extradm = (hit*game.damfac)/(ncrit*randreal(75, 100))
game.damage[j] += extradm
+ ncrit -= 1
skipcount = 0
for (i, j) in enumerate(cdam):
proutn(device[j])
"Register a phaser hit on Klingons and Romulans."
w = Coord()
skip(1)
- for (kk, wham) in enumerate(hits):
+ kk = 0
+ for wham in hits:
if wham == 0:
continue
dustfac = randreal(0.9, 1.0)
else:
prout(_("(Shields not currently useable.)"))
newqad()
- # Adjust finish time to time of tractor beaming
- fintim = game.state.date+game.optime
+ # Adjust finish time to time of tractor beaming?
+ # fintim = game.state.date+game.optime
attack(torps_ok=False)
if not game.state.kcmdr:
unschedule(FTBEAM)
global linecount
sys.stdout.write('\n')
proutn(prompt)
- raw_input()
+ if not replayfp:
+ raw_input()
sys.stdout.write('\n' * rows)
linecount = 0
legend = "unknown"
logfp.write("#curses: setwnd(%s)\n" % legend)
curwnd = wnd
- curses.curs_set(wnd == fullscreen_window or wnd == message_window or wnd == prompt_window)
+ # Some curses implementations get confused when you try this.
+ try:
+ curses.curs_set(wnd in (fullscreen_window, message_window, prompt_window))
+ except curses.error:
+ pass
def clreol():
"Clear to end of line -- can be a no-op in tty mode"
scanner.chew()
return
# Make sure enough time is left for the trip
- game.optime = course.dist/0.095
+ game.optime = course.distance/0.095
if game.optime >= game.state.remtime:
prout(_("First Officer Spock- \"Captain, our speed under impulse"))
prout(_("power is only 0.95 sectors per stardate. Are you sure"))
game.ididit = True
if game.alldone:
return
- power = 20.0 + 100.0*course.dist
+ power = 20.0 + 100.0*course.distance
game.energy -= power
- game.optime = course.dist/0.095
+ game.optime = course.distance/0.095
if game.energy <= 0:
finish(FNRG)
return
skip(1)
prout(_("Engineering to bridge--"))
if not game.shldup or 0.5*wcourse.power(game.warpfac) > game.energy:
- iwarp = (game.energy/(wcourse.dist+0.05)) ** 0.333333333
+ iwarp = (game.energy/(wcourse.distance+0.05)) ** 0.333333333
if iwarp <= 0:
prout(_("We can't do it, Captain. We don't have enough energy."))
else:
if logfp:
logfp.write("# seed %s\n" % seed)
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()))
random.seed(seed)