How do I convert "nil" to "0"?
Posted: Sat Feb 20, 2016 6:56 pm
More specifically, what I want to do is make a function that checks for infravision range and adds to that up to a certain maximum. However, if the character doesn't have infravision, trying to do maths on infravision causes errors. I've had this issue before with other values (most recently heightened senses), but just given up after a while. This is the current code for the talent, and the way it's gotten the furthest before frakkin' up:
Googling around a bit I found out about using the "or 0" to provide an out for when infravision doesn't exist, but it still gives me an error ("trying to perform arithmetics on field 'getInfra' (a function value)").
This seems like it should be easy to do, and seems essential for quite a number of purposes - anyone can fill me in on how to do it? Thanks!
Code: Select all
newTalent{
name = "IVTest",
type = {"undead/ghoul", 1},
mode = "passive",
require = undeads_req1,
points = 5,
getInfra = function(self, t) return self:attr("infravision") or 0 end,
getVision = function(self, t) return math.floor((3 + self:getTalentLevel(t)) * (1+0.01*self:getCun(s))) end,
passives = function(self, t, p)
self:talentTemporaryValue(p, "infravision", math.min((t.getInfra + 4), t.getVision(self, t)))
end,
info = function(self, t)
return ([[Your infravision range is increased by 4 to a maximum of %d. The maximum range scales with Cunning. ]])
:format(t.getVision(self, t))
end,
}
This seems like it should be easy to do, and seems essential for quite a number of purposes - anyone can fill me in on how to do it? Thanks!
