return tacmoves
def movescom(iq, avoid):
- "Commander movement helper."
+ "Supercommander movement helper."
# Avoid quadrants with bases if we want to avoid Enterprise
if not welcoming(iq) or (avoid and iq in game.state.baseq):
return False
key = scanner.nexttok()
if key == "IHREAL":
+ huh()
return
action = None
def randdevice():
"Choose a device to damage, at random."
weights = (
- 105, # DSRSENS: short range scanners 10.5%
- 105, # DLRSENS: long range scanners 10.5%
- 120, # DPHASER: phasers 12.0%
- 120, # DPHOTON: photon torpedoes 12.0%
- 25, # DLIFSUP: life support 2.5%
- 65, # DWARPEN: warp drive 6.5%
- 70, # DIMPULS: impulse engines 6.5%
- 145, # DSHIELD: deflector shields 14.5%
- 30, # DRADIO: subspace radio 3.0%
- 45, # DSHUTTL: shuttle 4.5%
- 15, # DCOMPTR: computer 1.5%
- 20, # NAVCOMP: navigation system 2.0%
- 75, # DTRANSP: transporter 7.5%
+ 105, # DSRSENS: short range scanners 10.5%
+ 105, # DLRSENS: long range scanners 10.5%
+ 120, # DPHASER: phasers 12.0%
+ 120, # DPHOTON: photon torpedoes 12.0%
+ 25, # DLIFSUP: life support 2.5%
+ 65, # DWARPEN: warp drive 6.5%
+ 70, # DIMPULS: impulse engines 6.5%
+ 135, # DSHIELD: deflector shields 13.5%
+ 30, # DRADIO: subspace radio 3.0%
+ 45, # DSHUTTL: shuttle 4.5%
+ 15, # DCOMPTR: computer 1.5%
+ 20, # NAVCOMP: navigation system 2.0%
+ 75, # DTRANSP: transporter 7.5%
20, # DSHCTRL: high-speed shield controller 2.0%
- 10, # DDRAY: death ray 1.0%
- 30, # DDSP: deep-space probes 3.0%
- 0, # DCLOAK: the cloaking device 0.0
+ 10, # DDRAY: death ray 1.0%
+ 30, # DDSP: deep-space probes 3.0%
+ 10, # DCLOAK: the cloaking device 1.0
)
assert(sum(weights) == 1000)
idx = randrange(1000)
# Killed some type of Klingon
game.state.galaxy[game.quadrant.i][game.quadrant.j].klingons -= 1
game.klhere -= 1
- if type == 'C':
+ if etype == 'C':
game.state.kcmdr.remove(game.quadrant)
unschedule(FTBEAM)
if game.state.kcmdr:
schedule(FTBEAM, expran(1.0*game.incom/len(game.state.kcmdr)))
if is_scheduled(FCDBAS) and game.battle == game.quadrant:
unschedule(FCDBAS)
- elif type == 'K':
+ elif etype == 'K':
game.state.remkl -= 1
- elif type == 'S':
+ elif etype == 'S':
game.state.nscrem -= 1
game.state.kscmdr.invalidate()
game.isatb = 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:
deadkl(neighbor, iquad, neighbor)
continue # neighbor loop
# Else enemy gets flung by the blast wave
- newc = neighbor + neighbor - hits[-1]
+ newc = neighbor + neighbor - start
proutn(crmena(True, iquad, "sector", neighbor) + _(" damaged"))
if not newc.valid_sector():
# can't leave quadrant
winner = cgetline()
# The 38 below must be 64 for 132-column paper
nskip = 38 - len(winner)/2
- fp.write("\n\n\n\n")
- # --------DRAW ENTERPRISE PICTURE.
- fp.write(" EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n" )
- fp.write(" EEE E : : : E\n" )
- fp.write(" EE EEE E : : NCC-1701 : E\n")
- fp.write("EEEEEEEEEEEEEEEE EEEEEEEEEEEEEEE : : : E\n")
- fp.write(" E EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n")
- fp.write(" EEEEEEEEE EEEEEEEEEEEEE E E\n")
- fp.write(" EEEEEEE EEEEE E E E E\n")
- fp.write(" EEE E E E E\n")
- fp.write(" E E E E\n")
- fp.write(" EEEEEEEEEEEEE E E\n")
- fp.write(" EEE : EEEEEEE EEEEEEEE\n")
- fp.write(" :E : EEEE E\n")
- fp.write(" .-E -:----- E\n")
- fp.write(" :E : E\n")
- fp.write(" EE : EEEEEEEE\n")
- fp.write(" EEEEEEEEEEEEEEEEEEEEEEE\n")
+ # This is where the ASCII art picture was emitted.
+ # It got garbled somewhere in the chain of transmission to the Almy version.
+ # We should restore it if we can find old enough FORTRAN sources.
fp.write("\n\n\n")
fp.write(_(" U. S. S. ENTERPRISE\n"))
fp.write("\n\n\n\n")
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":
+ if key == "IHREAL":
+ delta.i = scanner.real
+ elif key == "IHEOL":
+ delta.i = 0
+ scanner.push("\n")
+ else:
huh()
raise TrekError
- delta.i = scanner.real
# Check for zero movement
if delta.i == 0 and delta.j == 0:
scanner.chew()
game.state.nscrem = game.inscom = (game.skill > SKILL_FAIR)
game.state.remtime = 7.0 * game.length
game.intime = game.state.remtime
- game.state.remkl = game.inkling = 2.0*game.intime*((game.skill+1 - 2*randreal())*game.skill*0.1+.15)
+ game.state.remkl = game.inkling = int(2.0*game.intime*((game.skill+1 - 2*randreal())*game.skill*0.1+.15))
game.incom = min(MINCMDR, int(game.skill + 0.0625*game.inkling*randreal()))
game.state.remres = (game.inkling+4*game.incom)*game.intime
game.inresor = game.state.remres
("QUIT", 0),
("HELP", 0),
("SCORE", 0),
+ ("CURSES", 0),
("", 0),
]
helpme() # get help
elif cmd == "SCORE":
score() # see current score
+ elif cmd == "CURSES":
+ game.options |= (OPTION_CURSES | OPTION_COLOR)
+ iostart()
while True:
if game.alldone:
break # Game has ended