# He says the existing expression is prone to divide-by-zero errors
# after killing the last klingon when score is shown -- perhaps also
# if the only remaining klingon is SCOM.
- game.state.remtime = game.state.remres/(game.state.remkl + 4*len(game.state.kcmdr))
+ self.state.remtime = self.state.remres/(self.state.remkl + 4*len(self.state.kcmdr))
FWON = 0
FDEPLETE = 1
def movebaddy(enemy):
"Tactical movement for the bad guys."
- goto = Coord(); look = Coord()
+ goto = Coord()
+ look = Coord()
irun = False
# This should probably be just (game.quadrant in game.state.kcmdr) + (game.state.kscmdr==game.quadrant)
if game.skill >= SKILL_EXPERT:
dist1 = enemy.kdist
mdist = int(dist1 + 0.5) # Nearest integer distance
# If SC, check with spy to see if should hi-tail it
- if enemy.type=='S' and \
+ if enemy.type == 'S' and \
(enemy.power <= 500.0 or (game.condition=="docked" and not damaged(DPHOTON))):
irun = True
motion = -QUADSIZE
if success:
goto = look
if game.idebug:
- proutn(`goto`)
+ proutn(repr(goto))
else:
break # done early
if game.idebug:
for enemy in game.enemies:
if enemy.type == 'C':
movebaddy(enemy)
- if game.state.kscmdr==game.quadrant:
+ if game.state.kscmdr == game.quadrant:
for enemy in game.enemies:
if enemy.type == 'S':
movebaddy(enemy)
game.state.galaxy[game.state.kscmdr.i][game.state.kscmdr.j].klingons -= 1
game.state.kscmdr = iq
game.state.galaxy[game.state.kscmdr.i][game.state.kscmdr.j].klingons += 1
- if game.state.kscmdr==game.quadrant:
+ if game.state.kscmdr == game.quadrant:
# SC has scooted, remove him from current quadrant
game.iscate = False
game.isatb = 0
def supercommander():
"Move the Super Commander."
- iq = Coord(); sc = Coord(); ibq = Coord(); idelta = Coord()
+ iq = Coord()
+ sc = Coord()
+ ibq = Coord()
+ idelta = Coord()
basetbl = []
if game.idebug:
prout("== SUPERCOMMANDER")
game.tholian.move(here)
# check to see if all holes plugged
for i in range(QUADSIZE):
- if game.quad[0][i]!='#' and game.quad[0][i]!='T':
+ if game.quad[0][i] != '#' and game.quad[0][i] != 'T':
return
- if game.quad[QUADSIZE-1][i]!='#' and game.quad[QUADSIZE-1][i]!='T':
+ if game.quad[QUADSIZE-1][i] != '#' and game.quad[QUADSIZE-1][i] != 'T':
return
- if game.quad[i][0]!='#' and game.quad[i][0]!='T':
+ if game.quad[i][0] != '#' and game.quad[i][0] != 'T':
return
- if game.quad[i][QUADSIZE-1]!='#' and game.quad[i][QUADSIZE-1]!='T':
+ if game.quad[i][QUADSIZE-1] != '#' and game.quad[i][QUADSIZE-1] != 'T':
return
# All plugged up -- Tholian splits
- game.quad[game.tholian.location.i][game.tholian.location.j]='#'
+ game.quad[game.tholian.location.i][game.tholian.location.j] = '#'
dropin(' ')
prout(crmena(True, 'T', "sector", game.tholian) + _(" completes web."))
game.tholian.move(None)
prout(_("Shields raising uses up last of energy."))
finish(FNRG)
return
- game.ididit=True
+ game.ididit = True
return
elif action == "SHDN":
if not game.shldup:
prout(_("Shields already down."))
return
- game.shldup=False
- game.shldchg=True
+ game.shldup = False
+ game.shldchg = True
prout(_("Shields lowered."))
game.ididit = True
return
# Loop to move a single torpedo
setwnd(message_window)
for step in range(1, QUADSIZE*2):
- if not track.next(): break
+ if not track.next():
+ break
w = track.sector()
if not w.valid_sector():
break
- iquad=game.quad[w.i][w.j]
+ iquad = game.quad[w.i][w.j]
tracktorpedo(w, step, number, nburst, iquad)
if iquad == '.':
continue
return hit # Cheat if on a planet
# In the C/FORTRAN version, dispersion was 2.5 radians, which
# is 143 degrees, which is almost exactly 4.8 clockface units
- displacement = course(track.bearing+randreal(-2.4,2.4), distance=2**0.5)
+ displacement = course(track.bearing+randreal(-2.4, 2.4), distance=2**0.5)
displacement.next()
bumpto = displacement.sector()
if not bumpto.valid_sector():
if game.quad[bumpto.i][bumpto.j] == ' ':
finish(FHOLE)
return hit
- if game.quad[bumpto.i][bumpto.j]!='.':
+ if game.quad[bumpto.i][bumpto.j] != '.':
# can't move into object
return hit
game.sector = bumpto
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 = course(track.bearing+randreal(-2.4, 2.4), distance=2**0.5)
displacement.next()
bumpto = displacement.sector()
if not bumpto.valid_sector():
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
+ 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(_(" damaged."))
if damaged(DSHIELD) and game.shldup:
prout(_("***Shields knocked down."))
- game.shldup=False
+ game.shldup = False
def attack(torps_ok):
# bad guy attacks us
return
attempt = False
ihurt = False
- hitmax=0.0; hittot=0.0; chgfac=1.0
+ hitmax = 0.0
+ hittot = 0.0
+ chgfac = 1.0
where = "neither"
if game.idebug:
prout("=== ATTACK!")
continue # Don't waste the effort!
attempt = True # Attempt to attack
dustfac = randreal(0.8, 0.85)
- hit = enemy.power*math.pow(dustfac,enemy.kavgd)
+ hit = enemy.power*math.pow(dustfac, enemy.kavgd)
enemy.power *= 0.75
else: # Enemy uses photon torpedo
# We should be able to make the bearing() method work here
huh()
return None
delta = Coord()
- # FIXME: C code this was translated from is wacky -- why the sign reversal?
+ # C code this was translated from is wacky -- why the sign reversal?
delta.j = (w.j - game.sector.j)
delta.i = (game.sector.i - w.i)
if delta == Coord(0, 0):
def hittem(hits):
"Register a phaser hit on Klingons and Romulans."
- kk = 0
w = Coord()
skip(1)
- for (k, wham) in enumerate(hits):
- if wham==0:
+ for (kk, wham) in enumerate(hits):
+ if wham == 0:
continue
dustfac = randreal(0.9, 1.0)
- hit = wham*math.pow(dustfac,game.enemies[kk].kdist)
+ hit = wham*math.pow(dustfac, game.enemies[kk].kdist)
kpini = game.enemies[kk].power
kp = math.fabs(kpini)
if PHASEFAC*hit < kp:
else:
proutn(_("Very small hit on "))
ienm = game.quad[w.i][w.j]
- if ienm=='?':
+ if ienm == '?':
thing.angry()
proutn(crmena(False, ienm, "sector", w))
skip(1)
kk -= 1 # don't do the increment
continue
else: # decide whether or not to emasculate klingon
- if kpow>0 and withprob(0.9) and kpow <= randreal(0.4, 0.8)*kpini:
+ if kpow > 0 and withprob(0.9) and kpow <= randreal(0.4, 0.8)*kpini:
prout(_("***Mr. Spock- \"Captain, the vessel at Sector %s")%w)
prout(_(" has just lost its firepower.\""))
game.enemies[kk].power = -kpow
def phasers():
"Fire phasers at bad guys."
hits = []
- kz = 0; k = 1; irec=0 # Cheating inhibitor
- ifast = False; no = False; itarg = True; msgflag = True; rpow=0
+ kz = 0
+ k = 1
+ irec = 0 # Cheating inhibitor
+ ifast = False
+ no = False
+ itarg = True
+ msgflag = True
+ rpow = 0
automode = "NOTSET"
- key=0
+ key = 0
skip(1)
# SR sensors and Computer are needed for automode
if damaged(DSRSENS) or damaged(DCOMPTR):
ifast = True
# Original code so convoluted, I re-did it all
# (That was Tom Almy talking about the C code, I think -- ESR)
- while automode=="NOTSET":
- key=scanner.next()
+ while automode == "NOTSET":
+ key = scanner.next()
if key == "IHALPHA":
if scanner.sees("manual"):
if len(game.enemies)==0:
prout(_("There is no enemy present to select."))
scanner.chew()
key = "IHEOL"
- automode="AUTOMATIC"
+ automode = "AUTOMATIC"
else:
automode = "MANUAL"
key = scanner.next()
key = scanner.next()
if key != "IHREAL" and len(game.enemies) != 0:
prout(_("Phasers locked on target. Energy available: %.2f")%avail)
- irec=0
+ irec = 0
while True:
scanner.chew()
if not kz:
for i in range(len(game.enemies)):
- irec += math.fabs(game.enemies[i].power)/(PHASEFAC*math.pow(0.90,game.enemies[i].kdist))*randreal(1.01, 1.06) + 1.0
- kz=1
+ irec += math.fabs(game.enemies[i].power)/(PHASEFAC*math.pow(0.90, game.enemies[i].kdist))*randreal(1.01, 1.06) + 1.0
+ kz = 1
proutn(_("%d units required. ") % irec)
scanner.chew()
proutn(_("Units to fire= "))
key = scanner.next()
- if key!="IHREAL":
+ if key != "IHREAL":
return
rpow = scanner.real
if rpow > avail:
key = "IHEOL"
if not rpow > avail:
break
- if rpow<=0:
+ if rpow <= 0:
# chicken out
scanner.chew()
return
- key=scanner.next()
+ key = scanner.next()
if key == "IHALPHA" and scanner.sees("no"):
no = True
if ifast:
hits.append(0.0)
if powrem <= 0:
continue
- hits[i] = math.fabs(game.enemies[i].power)/(PHASEFAC*math.pow(0.90,game.enemies[i].kdist))
+ hits[i] = math.fabs(game.enemies[i].power)/(PHASEFAC*math.pow(0.90, game.enemies[i].kdist))
over = randreal(1.01, 1.06) * hits[i]
temp = powrem
powrem -= hits[i] + over
if key == "IHEOL":
scanner.chew()
if itarg and k > kz:
- irec=(abs(game.enemies[k].power)/(PHASEFAC*math.pow(0.9,game.enemies[k].kdist))) * randreal(1.01, 1.06) + 1.0
+ irec = (abs(game.enemies[k].power)/(PHASEFAC*math.pow(0.9, game.enemies[k].kdist))) * randreal(1.01, 1.06) + 1.0
kz = k
proutn("(")
if not damaged(DCOMPTR):
"Run through the event queue looking for things to do."
i = 0
fintim = game.state.date + game.optime
- yank=0
+ yank = 0
ictbeam = False
istract = False
- w = Coord(); hold = Coord()
- ev = Event(); ev2 = Event()
+ w = Coord()
+ hold = Coord()
+ ev = Event()
+ ev2 = Event()
def tractorbeam(yank):
"Tractor-beaming cases merge here."
finish(FDEPLETE)
return
# Any crew left alive?
- if game.state.crew <=0:
+ if game.state.crew <= 0:
finish(FCREW)
return
# Is life support adequate?
elif evcode == FSPY: # Check with spy to see if SC should tractor beam
if game.state.nscrem == 0 or \
ictbeam or istract or \
- game.condition=="docked" or game.isatb==1 or game.iscate:
+ game.condition == "docked" or game.isatb == 1 or game.iscate:
return
if game.ientesc or \
(game.energy<2000 and game.torps<4 and game.shield < 1250) or \
# tell the captain about it if we can
if communicating():
prout(_("Uhura- Captain, %s in Quadrant %s reports it is under attack") \
- % (q.planet, `w`))
+ % (q.planet, repr(w)))
prout(_("by a Klingon invasion fleet."))
if cancelrest():
return
if q.klingons <= 0:
q.status = "secure"
continue
- if game.state.remkl >=MAXKLGAME:
+ if game.state.remkl >= MAXKLGAME:
continue # full right now
# reproduce one Klingon
w = ev.quadrant
start = hits.pop()
for offset.i in range(-1, 1+1):
for offset.j in range(-1, 1+1):
- if offset.j==0 and offset.i==0:
+ if offset.j == 0 and offset.i == 0:
continue
neighbor = start + offset
if not neighbor.valid_sector():
if iquad == 'P':
game.state.nplankl += 1
else:
- game.state.worldkl += 1
+ game.state.nworldkl += 1
prout(crmena(True, 'B', "sector", neighbor) + _(" destroyed."))
game.iplnet.pclass = "destroyed"
game.iplnet = None
raise SystemExit, 1
try:
line = replayfp.readline().strip()
- (leader, key, seed) = line.split()
+ (leader, _, seed) = line.split()
seed = eval(seed)
sys.stderr.write("sst2k: seed set to %s\n" % seed)
line = replayfp.readline().strip()