# after killing the last klingon when score is shown -- perhaps also
# if the only remaining klingon is SCOM.
self.state.remtime = self.state.remres/(self.state.remkl + 4*len(self.state.kcmdr))
+ def unwon(self):
+ "Are there Klingons remaining?"
+ return self.state.remkl + len(self.state.kcmdr) + self.state.nscrem
FWON = 0
FDEPLETE = 1
dispersion = (randreal()+randreal())*0.5 - 0.5
dispersion += 0.002*enemy.power*dispersion
hit = torpedo(enemy.location, pcourse, dispersion, number=1, nburst=1)
- if (game.state.remkl + len(game.state.kcmdr) + game.state.nscrem) == 0:
+ if game.unwon() == 0:
finish(FWON) # Klingons did themselves in!
if game.state.galaxy[game.quadrant.i][game.quadrant.j].supernova or game.alldone:
return # Supernova or finished
unschedule(FSCDBAS)
# For each kind of enemy, finish message to player
prout(_(" destroyed."))
- if (game.state.remkl + len(game.state.kcmdr) + game.state.nscrem) == 0:
+ if game.unwon() == 0:
return
game.recompute()
# Remove enemy ship from arrays describing local conditions
torpedo(game.sector, tcourse[i], dispersion, number=i, nburst=n)
if game.alldone or game.state.galaxy[game.quadrant.i][game.quadrant.j].supernova:
return
- if (game.state.remkl + len(game.state.kcmdr) + game.state.nscrem)<=0:
+ if game.unwon()<=0:
finish(FWON)
def overheat(rpow):
skip(1)
kk = 0
for wham in hits:
+ if not kk < len(game.enemies):
+ # Should never happen.
+ break
if wham == 0:
continue
dustfac = randreal(0.9, 1.0)
skip(1)
if kpow == 0:
deadkl(w, ienm, w)
- if (game.state.remkl + len(game.state.kcmdr) + game.state.nscrem)==0:
+ if game.unwon()==0:
finish(FWON)
if game.alldone:
return
- 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:
# intelligent design
# x = 300 + 25*skill;
x = game.energy / (weakest.power * len(klingons))
- x *= 2.5; # would originally have been equivalent of 1.4,
+ #prout(_("Stats: energy = %s, kpower = %s, klingons = %s")
+ # % (game.energy, weakest.power, len(klingons)))
+ x *= 2.5 # would originally have been equivalent of 1.4,
# but we want command to work more often, more humanely */
- #prout(_("Prob = %d (%.4f)\n", i, x))
+ #prout(_("Prob = %.4f" % x))
# x = 100; // For testing, of course!
- if x > randreal(100):
+ if x < randreal(100):
# guess what, he surrendered!!! */
prout(_("Klingon captain at %s surrenders.") % weakest.location)
i = randreal(200)
if i > 0:
- prout(_("%d Klingons commit suicide rather than be taken captive.") % 200 - i)
- if i > brigfree:
- prout(_("%d Klingons die because there is no room for them in the brig.") % i-brigfree)
- i = brigfree
- brigfree -= i
+ prout(_("%d Klingons commit suicide rather than be taken captive.") % (200 - i))
+ if i > game.brigfree:
+ prout(_("%d Klingons die because there is no room for them in the brig.") % (i-brigfree))
+ i = game.brigfree
+ game.brigfree -= i
prout(_("%d captives taken") % i)
deadkl(weakest.location, weakest.type, game.sector)
- if (game.state.remkl + len(game.state.kcmdr) + game.state.nscrem)<=0:
+ if game.unwon()<=0:
finish(FWON)
return
# big surprise, he refuses to surrender */
- prout(_("Fat chance, captain!"))
+ prout(_("Fat chance, captain!"))
# Code from events.c begins here.
if game.quadrant == nq or communicating():
game.state.galaxy[nq.i][nq.j].supernova = True
# If supernova destroys last Klingons give special message
- if (game.state.remkl + len(game.state.kcmdr) + game.state.nscrem)==0 and not nq == game.quadrant:
+ if game.unwon()==0 and not nq == game.quadrant:
skip(2)
if w is None:
prout(_("Lucky you!"))
return 0
else:
starting = (game.inkling + game.incom + game.inscom)
- remaining = (game.state.remkl + len(game.state.kcmdr) + game.state.nscrem)
+ remaining = game.unwon()
return (starting - remaining)/elapsed
def badpoints():
prout(_("conquered. Your starship is now Klingon property,"))
prout(_("and you are put on trial as a war criminal. On the"))
proutn(_("basis of your record, you are "))
- if (game.state.remkl + len(game.state.kcmdr) + game.state.nscrem)*3.0 > (game.inkling + game.incom + game.inscom):
+ if game.unwon()*3.0 > (game.inkling + game.incom + game.inscom):
prout(_("acquitted."))
skip(1)
prout(_("LIVE LONG AND PROSPER."))
elif game.ship == 'E':
game.ship = 'F'
game.alive = False
- if (game.state.remkl + len(game.state.kcmdr) + game.state.nscrem) != 0:
+ if game.unwon() != 0:
goodies = game.state.remres/game.inresor
baddies = (game.state.remkl + 2.0*len(game.state.kcmdr))/(game.inkling+2.0*game.incom)
if goodies/baddies >= randreal(1.0, 1.5):
def score():
"Compute player's score."
timused = game.state.date - game.indate
- if (timused == 0 or (game.state.remkl + len(game.state.kcmdr) + game.state.nscrem) != 0) and timused < 5.0:
+ if (timused == 0 or game.unwon() != 0) and timused < 5.0:
timused = 5.0
game.perdate = killrate()
ithperd = 500*game.perdate + 0.5
elif linein[0] != "#":
break
else:
- linein = my_input() + "\n"
+ try:
+ linein = my_input() + "\n"
+ except EOFError:
+ prout("")
+ sys.exit(0)
if logfp:
logfp.write(linein)
return linein
linecount = 0
def textcolor(color=DEFAULT):
- if game.options & OPTION_COLOR:
+ if (game.options & OPTION_COLOR) and (game.options & OPTION_CURSES):
if color == DEFAULT:
curwnd.attrset(0)
elif color == BLACK:
curwnd.attron(curses.color_pair(curses.COLOR_WHITE) | curses.A_BOLD)
def highvideo():
- if game.options & OPTION_COLOR:
+ if (game.options & OPTION_COLOR) and (game.options & OPTION_CURSES):
curwnd.attron(curses.A_REVERSE)
#
def boom(w):
"Enemy fall down, go boom."
if game.options & OPTION_CURSES:
- drawmaps(2)
+ drawmaps(0)
setwnd(srscan_window)
srscan_window.attron(curses.A_REVERSE)
put_srscan_sym(w, game.quad[w.i][w.j])
iprompt = True
key = scanner.nexttok()
itemp = "verbose"
- if key != "IHREAL":
+ if key == "IHREAL":
+ delta.j = scanner.real
+ else:
huh()
raise TrekError
- delta.j = scanner.real
key = scanner.nexttok()
- if key != "IHREAL":
- huh()
- raise TrekError
- delta.i = scanner.real
+ if key == "IHREAL":
+ delta.i = scanner.real
+ else:
+ delta.i = 0
# Check for zero movement
if delta.i == 0 and delta.j == 0:
scanner.chew()
# Repeat if another snova
if not game.state.galaxy[game.quadrant.i][game.quadrant.j].supernova:
break
- if (game.state.remkl + len(game.state.kcmdr) + game.state.nscrem)==0:
+ if game.unwon()==0:
finish(FWON) # Snova killed remaining enemy.
def timwrp():
while len(game.enemies) > 0:
deadkl(game.enemies[1].location, game.quad[game.enemies[1].location.i][game.enemies[1].location.j],game.enemies[1].location)
prout(_("Ensign Chekov- \"Congratulations, Captain!\""))
- if (game.state.remkl + len(game.state.kcmdr) + game.state.nscrem) == 0:
+ if game.unwon() == 0:
finish(FWON)
if (game.options & OPTION_PLAIN) == 0:
prout(_("Spock- \"Captain, I believe the `Experimental Death Ray'"))
if game.tourn:
prout(_("This is tournament game %d.") % game.tourn)
prout(_("Your secret password is \"%s\"") % game.passwd)
- proutn(_("%d of %d Klingons have been killed") % (((game.inkling + game.incom + game.inscom) - (game.state.remkl + len(game.state.kcmdr) + game.state.nscrem)),
+ proutn(_("%d of %d Klingons have been killed") % (((game.inkling + game.incom + game.inscom) - game.unwon()),
(game.inkling + game.incom + game.inscom)))
if game.incom - len(game.state.kcmdr):
prout(_(", including %d Commander%s.") % (game.incom - len(game.state.kcmdr), (_("s"), "")[(game.incom - len(game.state.kcmdr))==1]))
% (int((100.0*game.shield)/game.inshld + 0.5), game.shield)
prstat(_("Shields"), s+data)
if not req or req == 9:
- prstat(_("Klingons Left"), "%d" \
- % (game.state.remkl+len(game.state.kcmdr)+game.state.nscrem))
+ prstat(_("Klingons Left"), "%d" % game.unwon())
if not req or req == 10:
if game.options & OPTION_WORLDS:
plnet = game.state.galaxy[game.quadrant.i][game.quadrant.j].planet