Page 1 of 1

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

Posted: Sat May 25, 2024 4:21 am
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.