Bug#1001823: Ardentryst near-unplayable after Python3 port

Jens Rottmann JRottm at gmx.de
Fri Dec 17 03:07:33 GMT 2021


Package: ardentryst
Version: 1.71-8
Severity: grave
Tags: patch

After Ardentryst was ported to Python 3 it appearently hasn't been play-tested well, several common actions don't work or crash the game, making it near-unplayable.

Start a new game, playing as "Nyx". Enter the 1st level. Try to cast "Ice" by pressing [D], [S]. Game crashes, printing a backtrace. Ice is Nyx's starting spell, the tutorial even instructs the player to try it, so it's quite hard to get through the game without it. Especially as her higher level spell "Implosion" insta-crashes, too.

For 2 more bugs, see below. Patch follows:

----------X8-------------X8--------
Python 3 port caused several severe bugs.

* Customizing action keys via Control Options no longer works, changed
   keys aren't saved. Also a deprecation warning is printed. (controls.py)
* Playing as Nyx and casting Ice ([D][S]) or Implosion ([D][W]) instantly
   crashes the game with an exception. (magic.py)
* Playing as Pyralis and using Spin-slash ([C][S]) hangs gameplay, you have
   to abort the current level to be able to move again. (play_level.py)

Signed-off-by: Jens Rottmann

--- ardentryst/controls.py
+++ py2-3fixes/controls.py
@@ -35,7 +35,7 @@
  class SET2:
      def __init__(self, keycodes, x, y, set):
          self.set = set
-        self.keys = [Key(keycodes[c], x + ((8-c)%3) * 32, y + (c/3)*30, "B-" + str(((11-c)/3)*3 - (11-c)%3), set) for c in range(9)]
+        self.keys = [Key(keycodes[c], x + ((8-c)%3) * 32, y + (c//3)*30, "B-" + str(((11-c)//3)*3 - (11-c)%3), set) for c in range(9)]

  class Key:
      def __init__(self, keycode, x, y, binding, set):
--- ardentryst/magic.py
+++ py2-3fixes/magic.py
@@ -236,7 +236,7 @@
      def s_init(self):
          global DATA
          self.affected = []
-        self.cant = self.caster.mp < 4
+        self.cant = self.caster.mp[0] < 4
      def s_blit(self, surf, ALT_X, ALT_Y):
          global DATA
          if not self.affected:
@@ -441,7 +441,7 @@
      def s_init(self):
          global DATA
          self.affected = []
-        self.cant = self.caster.mp < 15
+        self.cant = self.caster.mp[0] < 15
      def s_blit(self, surf, ALT_X, ALT_Y):
          global DATA
          pic = DATA.mag_images["bubble.png"][0]
@@ -472,7 +472,7 @@
                      if self.caster.mp[0] >= 15:
                          self.affected.append(monster)

-            self.affected.sort(lambda x, y: cmp(y.maxhp, x.maxhp))
+            self.affected.sort(key=lambda x: -x.maxhp)

              if len(self.affected):
                  self.affected = self.affected[:1]
--- ardentryst/play_level.py
+++ py2-3fixes/play_level.py
@@ -4727,7 +4727,7 @@
              self.mycombotime -= 1
              if self.chainmove[1] and self.chainmove[1] > 0:
                  self.chainmove[1] -= 1
-            if self.chainmove[1] and self.chainmove[1] == 0:
+            if self.chainmove[1] == 0:
                  cm = self.chainmove[:]
                  self.chainmove = [None, None]
                  getattr(self, cm[0])()
--



More information about the Pkg-games-devel mailing list