Code doesn't work under Python 3 yet.
[super-star-trek.git] / sst.py
diff --git a/sst.py b/sst.py
index 945017fed97d9a0c15ebc5e864c1b9ba92a8fbde..b6ac039828e5d872e3309f71aceaf78d239d6cbe 100755 (executable)
--- a/sst.py
+++ b/sst.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """
 sst.py -- Super Star Trek 2K
 
 """
 sst.py -- Super Star Trek 2K
 
@@ -27,7 +27,7 @@ try:
 except NameError:
     my_input = input
 
 except NameError:
     my_input = input
 
-version = "2.2"
+version = "2.3"
 
 docpath        = (".", "doc/", "/usr/share/doc/sst/")
 
 
 docpath        = (".", "doc/", "/usr/share/doc/sst/")
 
@@ -86,8 +86,6 @@ class Coord:
         return self.i >= 0 and self.i < QUADSIZE and self.j >= 0 and self.j < QUADSIZE
     def invalidate(self):
         self.i = self.j = None
         return self.i >= 0 and self.i < QUADSIZE and self.j >= 0 and self.j < QUADSIZE
     def invalidate(self):
         self.i = self.j = None
-    def is_valid(self):
-        return self.i != None and self.j != None
     def __eq__(self, other):
         return other != None and self.i == other.i and self.j == other.j
     def __ne__(self, other):
     def __eq__(self, other):
         return other != None and self.i == other.i and self.j == other.j
     def __ne__(self, other):
@@ -432,7 +430,7 @@ class Gamestate:
         self.state.remtime = self.state.remres/(self.remkl() + 4*len(self.state.kcmdr))
     def unwon(self):
         "Are there Klingons remaining?"
         self.state.remtime = self.state.remres/(self.remkl() + 4*len(self.state.kcmdr))
     def unwon(self):
         "Are there Klingons remaining?"
-        return self.remkl() + len(self.state.kcmdr) + self.state.nscrem
+        return self.remkl()
 
 FWON = 0
 FDEPLETE = 1
 
 FWON = 0
 FDEPLETE = 1
@@ -998,16 +996,16 @@ def cloak():
         if game.condition == "docked":
             prout(_("You cannot cloak while docked."))
 
         if game.condition == "docked":
             prout(_("You cannot cloak while docked."))
 
-       if game.state.date >= ALGERON and not game.isviolreported:
+        if game.state.date >= ALGERON and not game.isviolreported:
             prout(_("Spock- \"Captain, using the cloaking device is a violation"))
             prout(_("  of the Treaty of Algeron. Considering the alternatives,"))
             proutn(_("  are you sure this is wise? "))
             if not ja():
                 return
             prout(_("Spock- \"Captain, using the cloaking device is a violation"))
             prout(_("  of the Treaty of Algeron. Considering the alternatives,"))
             proutn(_("  are you sure this is wise? "))
             if not ja():
                 return
-       prout(_("Engineer Scott- \"Cloaking device has engaging, Sir...\""))
+        prout(_("Engineer Scott- \"Cloaking device has engaging, Sir...\""))
         attack(True)
         attack(True)
-       prout(_("Engineer Scott- \"Cloaking device has engaged, Sir.\""))
-       game.iscloaked = True
+        prout(_("Engineer Scott- \"Cloaking device has engaged, Sir.\""))
+        game.iscloaked = True
 
         if game.irhere and game.state.date >= ALGERON and not game.isviolreported:
             prout(_("The Romulan ship discovers you are breaking the Treaty of Algeron!"))
 
         if game.irhere and game.state.date >= ALGERON and not game.isviolreported:
             prout(_("The Romulan ship discovers you are breaking the Treaty of Algeron!"))
@@ -2593,7 +2591,7 @@ def events():
             q.klingons += 1
             if game.quadrant == w:
                 game.klhere += 1
             q.klingons += 1
             if game.quadrant == w:
                 game.klhere += 1
-                game.enemies.append(newkling())
+                newkling() # also adds it to game.enemies
             # recompute time left
             game.recompute()
             if communicating():
             # recompute time left
             game.recompute()
             if communicating():
@@ -2939,9 +2937,9 @@ def kaboom():
     skip(1)
     if len(game.enemies) != 0:
         whammo = 25.0 * game.energy
     skip(1)
     if len(game.enemies) != 0:
         whammo = 25.0 * game.energy
-        for l in range(len(game.enemies)):
-            if game.enemies[l].power*game.enemies[l].kdist <= whammo:
-                deadkl(game.enemies[l].location, game.quad[game.enemies[l].location.i][game.enemies[l].location.j], game.enemies[l].location)
+        for e in game.enemies[::-1]:
+            if e.power*e.kdist <= whammo:
+                deadkl(e.location, game.quad[e.location.i][e.location.j], e.location)
     finish(FDILITHIUM)
 
 def killrate():
     finish(FDILITHIUM)
 
 def killrate():
@@ -3191,7 +3189,8 @@ def score():
         klship = 1
     else:
         klship = 2
         klship = 1
     else:
         klship = 2
-    game.score = 10*(game.inkling - game.remkl()) \
+    dead_ordinaries= game.inkling - game.remkl() + len(game.state.kcmdr) + game.state.nscrem
+    game.score = 10*(dead_ordinaries)\
              + 50*(game.incom - len(game.state.kcmdr)) \
              + ithperd + iwon \
              + 20*(game.inrom - game.state.nromrem) \
              + 50*(game.incom - len(game.state.kcmdr)) \
              + ithperd + iwon \
              + 20*(game.inrom - game.state.nromrem) \
@@ -3209,9 +3208,9 @@ def score():
     if game.state.nromrem and game.gamewon:
         prout(_("%6d Romulans captured                  %5d") %
               (game.state.nromrem, game.state.nromrem))
     if game.state.nromrem and game.gamewon:
         prout(_("%6d Romulans captured                  %5d") %
               (game.state.nromrem, game.state.nromrem))
-    if game.inkling - game.remkl():
+    if dead_ordinaries:
         prout(_("%6d ordinary Klingons destroyed        %5d") %
         prout(_("%6d ordinary Klingons destroyed        %5d") %
-              (game.inkling - game.remkl(), 10*(game.inkling - game.remkl())))
+              (dead_ordinaries, 10*dead_ordinaries))
     if game.incom - len(game.state.kcmdr):
         prout(_("%6d Klingon commanders destroyed       %5d") %
               (game.incom - len(game.state.kcmdr), 50*(game.incom - len(game.state.kcmdr))))
     if game.incom - len(game.state.kcmdr):
         prout(_("%6d Klingon commanders destroyed       %5d") %
               (game.incom - len(game.state.kcmdr), 50*(game.incom - len(game.state.kcmdr))))
@@ -3855,7 +3854,7 @@ def dock(verbose):
     if game.inorbit:
         prout(_("You must first leave standard orbit."))
         return
     if game.inorbit:
         prout(_("You must first leave standard orbit."))
         return
-    if not game.base.is_valid() or abs(game.sector.i-game.base.i) > 1 or abs(game.sector.j-game.base.j) > 1:
+    if game.base is None or abs(game.sector.i-game.base.i) > 1 or abs(game.sector.j-game.base.j) > 1:
         prout(crmshp() + _(" not adjacent to base."))
         return
     if game.iscloaked:
         prout(crmshp() + _(" not adjacent to base."))
         return
     if game.iscloaked:
@@ -4491,7 +4490,7 @@ def mayday():
             # found one -- finish up
             game.sector = w
             break
             # found one -- finish up
             game.sector = w
             break
-    if not game.sector.is_valid():
+    if game.sector is None:
         prout(_("You have been lost in space..."))
         finish(FMATERIALIZE)
         return
         prout(_("You have been lost in space..."))
         finish(FMATERIALIZE)
         return
@@ -4671,7 +4670,7 @@ def orbit():
     if damaged(DWARPEN) and damaged(DIMPULS):
         prout(_("Both warp and impulse engines damaged."))
         return
     if damaged(DWARPEN) and damaged(DIMPULS):
         prout(_("Both warp and impulse engines damaged."))
         return
-    if not game.plnet.is_valid():
+    if game.plnet is None:
         prout("There is no planet in this sector.")
         return
     if abs(game.sector.i-game.plnet.i)>1 or abs(game.sector.j-game.plnet.j)>1:
         prout("There is no planet in this sector.")
         return
     if abs(game.sector.i-game.plnet.i)>1 or abs(game.sector.j-game.plnet.j)>1:
@@ -5020,7 +5019,7 @@ def deathray():
         prouts(_("Sulu- \"Captain!  It's working!\""))
         skip(2)
         while len(game.enemies) > 0:
         prouts(_("Sulu- \"Captain!  It's working!\""))
         skip(2)
         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)
+            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.unwon() == 0:
             finish(FWON)
         prout(_("Ensign Chekov-  \"Congratulations, Captain!\""))
         if game.unwon() == 0:
             finish(FWON)