setwnd(srscan_window)
else:
setwnd(message_window)
- shoved = False
ac = bearing + 0.25*dispersion # dispersion is a random variable
bullseye = (15.0 - bearing)*0.5235988
track = course(bearing=ac, distance=QUADSIZE, origin=cartesian(origin))
- jw = coord(0, 0)
+ bumpto = coord(0, 0)
# Loop to move a single torpedo
+ setwnd(message_window)
for step in range(1, QUADSIZE*2):
track.next()
w = track.sector()
if iquad==IHDOT:
continue
# hit something
- setwnd(message_window)
if damaged(DSRSENS) and not game.condition=="docked":
skip(1); # start new line after text track
if iquad in (IHE, IHF): # Hit our ship
skip(1)
prout(_("Torpedo hits %s.") % crmshp())
hit = 700.0 + randreal(100) - \
- 1000.0 * (w-origin).distance() * math.fabs(math.sin(bullseye-angle))
+ 1000.0 * (w-origin).distance() * math.fabs(math.sin(bullseye-track.angle))
newcnd(); # we're blown out of dock
- # We may be displaced.
if game.landed or game.condition=="docked":
return hit # Cheat if on a planet
ang = track.angle + 2.5*(randreal()-0.5)
temp = math.fabs(math.cos(ang))
xx = -math.sin(ang)/temp
yy = math.cos(ang)/temp
- jw.i = int(w.i+xx+0.5)
- jw.j = int(w.j+yy+0.5)
- if not jw.valid_sector():
+ bumpto.i = int(w.i+xx+0.5)
+ bumpto.j = int(w.j+yy+0.5)
+ if not bumpto.valid_sector():
return hit
- if game.quad[jw.i][jw.j]==IHBLANK:
+ if game.quad[bumpto.i][bumpto.j]==IHBLANK:
finish(FHOLE)
return hit
- if game.quad[jw.i][jw.j]!=IHDOT:
+ if game.quad[bumpto.i][bumpto.j]!=IHDOT:
# can't move into object
return hit
- game.sector = jw
+ game.sector = bumpto
proutn(crmshp())
- shoved = True
+ game.quad[w.i][w.j]=IHDOT
+ game.quad[bumpto.i][bumpto.j]=iquad
+ prout(_(" displaced by blast to Sector %s ") % bumpto)
+ for enemy in game.enemies:
+ enemy.kdist = enemy.kavgd = (game.sector-enemy.kloc).distance()
+ game.enemies.sort(lambda x, y: cmp(x.kdist, y.kdist))
+ return None
elif iquad in (IHC, IHS, IHR, IHK): # Hit a regular enemy
# find the enemy
if iquad in (IHC, IHS) and withprob(0.05):
temp = math.fabs(math.cos(ang))
xx = -math.sin(ang)/temp
yy = math.cos(ang)/temp
- jw.i = int(w.i+xx+0.5)
- jw.j = int(w.j+yy+0.5)
- if not jw.valid_sector():
+ bumpto.i = int(w.i+xx+0.5)
+ bumpto.j = int(w.j+yy+0.5)
+ if not bumpto.valid_sector():
prout(_(" damaged but not destroyed."))
return
- if game.quad[jw.i][jw.j]==IHBLANK:
+ if game.quad[bumpto.i][bumpto.j] == IHBLANK:
prout(_(" buffeted into black hole."))
- deadkl(w, iquad, jw)
+ deadkl(w, iquad, bumpto)
return None
- if game.quad[jw.i][jw.j]!=IHDOT:
+ if game.quad[bumpto.i][bumpto.j] != IHDOT:
# can't move into object
prout(_(" damaged but not destroyed."))
return None
proutn(_(" damaged--"))
- enemy.kloc = jw
- shoved = True
+ enemy.kloc = bumpto
+ game.quad[w.i][w.j]=IHDOT
+ game.quad[bumpto.i][bumpto.j]=iquad
+ prout(_(" displaced by blast to Sector %s ") % bumpto)
+ for enemy in game.enemies:
+ enemy.kdist = enemy.kavgd = (game.sector-enemy.kloc).distance()
+ game.enemies.sort(lambda x, y: cmp(x.kdist, y.kdist))
+ return None
break
elif iquad == IHB: # Hit a base
skip(1)
skip(1)
return None
break
- if curwnd!=message_window:
- setwnd(message_window)
- if shoved:
- game.quad[w.i][w.j]=IHDOT
- game.quad[jw.i][jw.j]=iquad
- prout(_(" displaced by blast to Sector %s ") % jw)
- for ll in range(len(game.enemies)):
- game.enemies[ll].kdist = game.enemies[ll].kavgd = (game.sector-game.enemies[ll].kloc).distance()
- game.enemies.sort(lambda x, y: cmp(x.kdist, y.kdist))
- return None
skip(1)
prout(_("Torpedo missed."))
return None;