Difference between revisions of "Module:AttackSpell"

From CrawlWiki
Jump to: navigation, search
 
(One intermediate revision by the same user not shown)
Line 2: Line 2:
  
 
function p.to_number(x)
 
function p.to_number(x)
  return tonumber(string.gsub(x, ",", ""))
+
  local n = string.gsub(x, ",", "")
 +
return tonumber(n)
 
end
 
end
 
   
 
   
Line 21: Line 22:
  
 
function p.calc_damage(frame)
 
function p.calc_damage(frame)
   return p.calc_hit(frame)
+
   local hit_adder = p.to_number(frame.args[1])
 +
  local hit_num = p.to_number(frame.args[2])
 +
  local hit_denom = p.to_number(frame.args[3])
 +
  local power = p.to_number(frame.args[4])
 +
  local powercap = p.to_number(frame.args[5])
 +
  local resistance = p.to_number(frame.args[6])
 +
 
 +
  if not hit_adder or not hit_num or not hit_denom or not power or not powercap or not resistance then
 +
    return ""
 +
  end
 +
  if power > powercap then
 +
    power = powercap
 +
  end
 +
  return tostring(math.ceil((hit_adder + power * hit_num / hit_denom) / resistance))
 
end
 
end
  
 
return p
 
return p

Latest revision as of 19:55, 23 May 2014

Documentation for this module may be created at Module:AttackSpell/doc

local p = {}

function p.to_number(x)
 local n = string.gsub(x, ",", "")
 return tonumber(n)
end
 
function p.calc_hit(frame)
  local hit_adder = p.to_number(frame.args[1])
  local hit_num = p.to_number(frame.args[2])
  local hit_denom = p.to_number(frame.args[3])
  local power = p.to_number(frame.args[4])
  local powercap = p.to_number(frame.args[5])
  if not hit_adder or not hit_num or not hit_denom or not power or not powercap then
    return ""
  end
  if power > powercap then
    power = powercap
  end
  return tostring(math.ceil(hit_adder + power * hit_num / hit_denom))
end

function p.calc_damage(frame)
  local hit_adder = p.to_number(frame.args[1])
  local hit_num = p.to_number(frame.args[2])
  local hit_denom = p.to_number(frame.args[3])
  local power = p.to_number(frame.args[4])
  local powercap = p.to_number(frame.args[5])
  local resistance = p.to_number(frame.args[6])

  if not hit_adder or not hit_num or not hit_denom or not power or not powercap or not resistance then
    return ""
  end
  if power > powercap then
    power = powercap
  end
  return tostring(math.ceil((hit_adder + power * hit_num / hit_denom) / resistance))
end

return p