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])()
--

Reply via email to