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