[1.7.6] Traps on maps with negative current_levels deal nan damage

Make all T-Engine/ToME 4 bug reports here

Moderator: Moderator

Post Reply
Message
Author
minmay
Wyrmic
Posts: 286
Joined: Fri Sep 07, 2012 1:34 am
Contact:

[1.7.6] Traps on maps with negative current_levels deal nan damage

#1 Post by minmay »

Some traps use resolvers.clscale for their damage, with a fourth parameter of 0.5 or 0.75 or whatever:

Code: Select all

function resolvers.calc.clscale(t, e)
  return math.max(math.ceil((t[1] + (t[3] and rng.range(-t[3],t[3]) or 0))*(resolvers.current_level/t[2])^t[4]),t[5] or t[1])
end
If resolvers.current_level is negative (yes, this occurs in practice), this will attempt to exponentiate a negative number by 0.5 or 0.75 or whatever, resulting in nan. Since nan damage easily results in actors with nan life, and t-engine serializes nan wrong, this easily results in unloadable savegames.

Post Reply