X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=sst.py;h=0b99af03b120071aa807c496700777e0bc7a693a;hp=724674ad24f9f51e5ca2c08dcb221fcdeb65397b;hb=22fe003b558eef0e7ed6be42bb9207ab4567f55c;hpb=abf770449f233ca6c9f3941b1083cff3ac74f87a diff --git a/sst.py b/sst.py index 724674a..0b99af0 100755 --- a/sst.py +++ b/sst.py @@ -273,6 +273,8 @@ class Enemy: 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 @@ -379,6 +381,7 @@ class Gamestate: 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 ? @@ -698,8 +701,7 @@ def movescom(iq, avoid): 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() @@ -1140,40 +1142,43 @@ def torpedo(origin, bearing, dispersion, number, nburst): 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) @@ -1269,6 +1274,7 @@ def torpedo(origin, bearing, dispersion, number, nburst): return None break skip(1) + setwnd(message_window) prout(_("Torpedo missed.")) return None @@ -2049,8 +2055,8 @@ def events(): 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)