Assign some probability to claaking device getting damaged.
[super-star-trek.git] / sst.py
diff --git a/sst.py b/sst.py
index 599fe45fdcf977e9124c299c52fb22e0dd1b375e..599ebc9fae1ef5aa4506004a4520b949fdc7c04b 100755 (executable)
--- a/sst.py
+++ b/sst.py
@@ -709,7 +709,7 @@ def moveklings():
     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
@@ -934,6 +934,7 @@ def cloak():
     key = scanner.nexttok()
 
     if key == "IHREAL":
+        huh()
         return
 
     action = None
@@ -1113,23 +1114,23 @@ def doshield(shraise):
 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)
@@ -1607,16 +1608,16 @@ def deadkl(w, etype, mv):
         # 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
@@ -3277,24 +3278,9 @@ def plaque():
     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")
@@ -4013,15 +3999,20 @@ def getcourse(isprobe):
             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()